2013-11-14 2 views
2

Мне нужно запустить отчет, в котором указывается количество записей с определенной createria в месяц. За каждый месяц мой запрос отображает месяц более одного раза. Может быть, я что-то не так: Мой скрипт:Логическая ошибка в моем SqlCode

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

Возможные квитанции: 800,75.
Am ожидал что-то вроде:

января TOTALCOUNT

Фев TotalCount т.д.

+1

и что вы получите? – Ashalynd

+0

Вы хотите объединить январь 2012 и январь 2013 года вместе или отдельно? –

ответ

3

Использование Group by DATEPART(month,DatePrinted).

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) 

Примечание: Может быть вам нужно сгруппировать в год, чтобы получить правильные результаты. В противном случае вы получите количество аналогичных месяцев независимо от года. Если вы ищете конкретный год, добавить этот фильтр к WHERE п Year(DatePrinted) = yourYear

3

Вашей группы заявление неправильно, он должен быть на DATEPART(mm,DatePrinted)

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

Вы также можете заменить COUNT(ReceiptNo) на COUNT(*).

Также обратите внимание, что как сейчас, все месяцы разных лет будут сгруппированы вместе.

Если isin't желаемого поведения можно SELECT и GROUP BY DATEPART(yyyy, DatePrinted), DATEPART(mm, DatePrinted)

Смежные вопросы