【问题标题】:Using YEAR and SUM CASE WHEN使用 YEAR 和 SUM CASE WHEN
【发布时间】:2013-09-27 03:50:40
【问题描述】:

我有一个查询,我将过去 3 年的所有课程时间加在一起,但在计算出年份和总和时遇到了麻烦。

代码是

SELECT TNG_MDA_TYP_CD, SUM(LEN_HRS_ST) AS Expr1, REC_EFF_STT_DT
FROM  dbo.COL_TBL_VCOURSE_NEW
GROUP BY TNG_MDA_TYP_CD, REC_EFF_STT_DT

REC_EFF_STT_DT 是提供课程的日期,LEN_HRS_ST 是总小时数。我不知道如何将 YEAR 函数与 SUM CASE WHEN 结合起来。我需要每一年的专栏,因此需要一列 2010、2011 和 2012 年的总小时数。

【问题讨论】:

    标签: sql-server


    【解决方案1】:

    问题澄清后编辑:

    SELECT 
     TNG_MDA_TYP_CD, 
     Sum2010 = SUM(CASE WHEN DATEPART(YEAR, REC_EFF_STT_DT) = 2010 THEN LEN_HRS_ST ELSE 0 END),
     Sum2011 = SUM(CASE WHEN DATEPART(YEAR, REC_EFF_STT_DT) = 2011 THEN LEN_HRS_ST ELSE 0 END),
     Sum2012 = SUM(CASE WHEN DATEPART(YEAR, REC_EFF_STT_DT) = 2012 THEN LEN_HRS_ST ELSE 0 END)
    FROM  dbo.COL_TBL_VCOURSE_NEW
    GROUP BY TNG_MDA_TYP_CD
    

    假设您确实想要如您所说的 2010、2011 和 2012 年的总和。如需更多动态,请查看 PIVOT 函数。

    【讨论】:

    • 抱歉,我的意思是添加我需要一个包含 2010、2011 和 2012 年总和的列。
    • 在您澄清后编辑我的初始答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-12
    • 1970-01-01
    • 1970-01-01
    • 2016-01-14
    • 2014-08-14
    • 1970-01-01
    相关资源
    最近更新 更多