【问题标题】:SQL get monthly/weekly data sum?SQL获取每月/每周数据总和?
【发布时间】:2012-07-11 12:42:03
【问题描述】:

我得到这些行的每日数据总和?

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。

谢谢。

【问题讨论】:

    标签: sql sql-server date group-by


    【解决方案1】:

    使用

    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
    

    【讨论】:

      【解决方案2】:

      为什么要使用 3 种不同的语句,然后将所有语句合并。这些可以在单个语句中完成,因为您的分组列是日期并且是相同的。但是,唯一的问题是您将获得一行,所有 3 个总和作为列而不是 3 行。但是您可以使用 unpivot 来制作列到行。这将更有效,因为您只需执行一次而不是 3 次。在大桌子上,这可能会大大提高性能。

      关于按年和月计算的金额,只回答了

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-22
        • 1970-01-01
        • 2022-06-27
        • 2014-08-17
        相关资源
        最近更新 更多