SQL获得每月/每周数据总和?

时间:2012-07-11 12:42:03

标签: sql sql-server date group-by

我用这些行获得每日数据总量?

SELECT convert(varchar, okuma_tarihi, 102) as Gunler,SUM(toplam_kullanim_T1) as TotalUsageValue,'T1' as UsageType FROM TblSayacOkumalari
GROUP BY convert(varchar, okuma_tarihi, 102)
UNION ALL
SELECT convert(varchar, okuma_tarihi, 102) as Gunler,SUM(toplam_kullanim_T2) as TotalUsageValue,'T2' as UsageType FROM TblSayacOkumalari 
GROUP BY convert(varchar, okuma_tarihi, 102)
UNION ALL
SELECT convert(varchar, okuma_tarihi, 102) as Gunler,SUM(toplam_kullanim_T3) as TotalUsageValue,'T3' as UsageType FROM TblSayacOkumalari
GROUP BY convert(varchar, okuma_tarihi, 102)

如何每周或每小时获得数据的总和?关于这个主题或代码示例是否有任何问题?当我写MONTH(DATE)而不是convert(varchar, okuma_tarihi, 102)时,它会显示例如该月份的所有数据总和。 (2010年6月价值+ 2011年6月价值)。我不想要这个。我使用的是MSSQL Server 2008。

感谢。

2 个答案:

答案 0 :(得分:4)

使用

GROUP BY YEAR(<date_column_name>),MONTH(<date_column_name>) --for months

GROUP BY YEAR(<date_column_name>),DATEPART(wk,<date_column_name>) --for weeks

答案 1 :(得分:0)

为什么你使用3个不同的语句然后联合所有。这些可以在单个语句中完成,因为您的分组列是日期并且是相同的。但是,只有问题是您将获得一行,其中所有3个和作为列而不是3行。但是您可以使用unpivot来创建列到行。这样做会更有效,因为你只需要做一次而不是3次。在一张大桌子上,这可能会带来很大的性能提升。

关于按年和月的总和,它仅得到回答