2013-11-14 1 views
2

매월 특정 createria 함께 레코드 수를 제공하는 보고서를 실행해야합니다. 각 달 내 쿼리를 한 번 이상 두 번 표시합니다. 뭔가 잘못하고있는 것일 수 있습니다. 내 스크립트 :내 SqlCode 논리 오류

Select DATEPART(mm,DatePrinted),COUNT(ReceiptNo)As CardPrinted 
from mytble where ReceiptNo like'990%' 
Group by DatePrinted  

가능한 영수증 : 800,75.

월 TOTALCOUNT TOTALCOUNT 등

+1

GROUP BY DATEPART(yyyy, DatePrinted), DATEPART(mm, DatePrinted) 당신이 무엇을 어떻게해야합니까? – Ashalynd

+0

2012 년 1 월과 1 월 2013을 함께 또는 개별적으로 그룹화 하시겠습니까? –

답변

3

사용 Group by DATEPART(month,DatePrinted)

2월 :
오전 뭔가를 기대했다. 이 달의 이름을해야하는 경우

Select DATEPART(month,DatePrinted) As MyMonth, COUNT(ReceiptNo) As CardPrinted 
From mytble 
Where ReceiptNo like '990%' 
Group by DATEPART(month,DatePrinted) 

, 다음 DATENAME() 함수를 사용

Select DATENAME(month,DatePrinted) As MyMonth, COUNT(ReceiptNo) As CardPrinted 
From mytble 
Where ReceiptNo like '990%' 
Group by DATENAME(month,DatePrinted) 

참고 : 당신이 올바른 결과를 얻을 년까지 그룹에 필요 할 수 있습니다. 그렇지 않으면 연도에 관계없이 비슷한 달 수를 얻게됩니다. 또한 COUNT(*)에 의해 COUNT(ReceiptNo)를 대체 할 수 DATEPART(mm,DatePrinted)

SELECT DATEPART(mm, DatePrinted) AS [Month], COUNT(ReceiptNo) As CardPrinted 
FROM mytble 
WHERE ReceiptNo LIKE '990%' 
GROUP BY DATEPART(mm, DatePrinted) 

에 당신이 특정 연도를 찾고있는 경우, WHEREYear(DatePrinted) = yourYear

3

문하여 그룹이 잘못이 필터를 추가, 그것은해야합니다.

지금 당장은 다른 달의 모든 달이 함께 그룹화됩니다.

하면 원하는 동작 isin't 당신 수 SELECT