我有一个查询,我在过去的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年的总时数。
答案 0 :(得分: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函数。