2013-11-14 52 views
2

我需要运行一个报告,指出特定创意每月的记录数。对于每个月我的查询不止一次显示该月。难道是我做错了什么:我的脚本:我的SqlCode中的逻辑错误

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

posits receipt:800,75。
上午预计类似:

月TOTALCOUNT

二月TOTALCOUNT等

+1

您怎么弄? – Ashalynd

+0

您想将2012年1月和2013年1月分组在一起或分开吗? –

回答

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

你GROUP BY说法是错误的,它必须是在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(*)代替COUNT(ReceiptNo)

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

如果isin't所期望的行为,你可以SELECTGROUP BY DATEPART(yyyy, DatePrinted), DATEPART(mm, DatePrinted)