将SQL数据按月份拆分

3

我有一个包含几百行数据的Datatable,它是今年的数据。(MS SqlServer 2k8)

我想将这个数据集分成每个月的客户查询。

目前我所拥有的是:

Select count(id) As Customers, DatePart(month, enquiryDate) as MonthTotal, productCode From customerEnquiries
where enquiryDate > '2012-01-01 00:00:00'
group by productCode, enquiryDate

但这将为每个数据项产生一行。(而我想要每个数据项每月一个行。)
那么我该如何更改上述查询,以便获得每个数据项每月的一行,而不是获得每个数据项的多行?
1 1 10
1 1 10
1 1 11
1 2 10
1 2 10

...

I get

2 1 10    <-- 2 enquiries for product code 10 in month 1
1 1 11    <-- 1 enquiries for product code 11 in month 1
2 2 10    <-- 2 enquiries for product code 10 in month 2
etc

还有一个额外的问题,是否有简单的方法将每个月命名为Jan,Feb,March,而不是在月份列中使用1、2、3等数字?

2个回答

8
尝试这个。
Select count(id) As Customers, DatePart(month, enquiryDate) as MonthTotal, productCode From customerEnquiries
where enquiryDate > '2012-01-01 00:00:00'
group by productCode, DatePart(month, enquiryDate)

这可能对你有所帮助。

谢谢。当我修改查询以获取更多数据时,它会回到1,1,1,1格式,但在我回来问更多问题之前,我会尝试找出为什么会出现这种情况。 - Matt

2

对于奖金,DATENAME(MONTH, enquiryDate)会返回月份的名称。


2
如果你的日期不是来自同一年,你可能需要在你的组中添加DatePart(year,....,小心! - Vinny Roe
1
这将始终返回“january”。如果您想让它工作,请使用“DATENAME(MONTH, enquiryDate)” 。 - katalin_2003

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接