我的SqlCode中的逻辑错误

时间:2013-11-14 14:55:54

标签: sql tsql

我需要运行一个报告,给出每月特定createria的记录计数。对于每个月,我的查询不止一次显示月份。可能是我做错了什么:我的剧本:

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

可能的收据:800,75 我期待的是:

1月份总计数

2月总数等。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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(*)

另请注意,就像现在一样,不同年份的所有月份将组合在一起。

如果这不是您想要的行为,您可以SELECTGROUP BY DATEPART(yyyy, DatePrinted), DATEPART(mm, DatePrinted)