2013-03-06 73 views
0

我有一个代码,我使用的是一个案例,当声明选择所有特定日历年的数据时,我需要总结当年积累的所有学习时间,并且我有代码集像:总结在一个案例声明

SELECT rg.JOB_GRP_CD, 
     SUM(CASE WHEN EMP_TNG_STT_DT BETWEEN '2010-01-01' AND '2010-12-31' THEN 'ST_HOURS_SUM' ELSE 0 END) AS 2010_Hours 
FROM dbo.COL_TBL_TRN_RESULTS_GEMS rg 
INNER JOIN dbo.COL_V_Cost_GEMS_Detail gd 
    ON rg.JOB_GRP_CD = gd.JOB_GRP_CD 
    AND rg.EMP_TNG_STT_DT = gd.REC_EFF_STT_DT 
GROUP BY rg.JOB_GRP_CD 

我一直得到一个无法解析查询文本错误。 ST_HOURS_SUM是我需要为每个人在2010年总计的。 ST_SUM_HOURS是一个包含特定培训小时的专栏,我需要它们为每个员工设定一年。

回答

1

如上所述删除引号,&您不能有以数字开头的列别名;逃避它:

...ELSE 0 END) AS [2010_Hours] 
1

试试这个:

SELECT dbo.COL_TBL_TRN_RESULTS_GEMS.JOB_GRP_CD, SUM(CASE WHEN EMP_TNG_STT_DT BETWEEN '2010-01-01' AND '2010-12-31' THEN ST_HOURS_SUM ELSE 0 END) AS [2010_Hours] 
FROM dbo.COL_TBL_TRN_RESULTS_GEMS INNER JOIN 
       dbo.COL_V_Cost_GEMS_Detail ON dbo.COL_TBL_TRN_RESULTS_GEMS.JOB_GRP_CD = dbo.COL_V_Cost_GEMS_Detail.JOB_GRP_CD AND 
       dbo.COL_TBL_TRN_RESULTS_GEMS.EMP_TNG_STT_DT = dbo.COL_V_Cost_GEMS_Detail.REC_EFF_STT_DT 
GROUP BY dbo.COL_TBL_TRN_RESULTS_GEMS.JOB_GRP_CD 
+0

不,它没有:/ – user2119980 2013-03-06 13:07:30

+0

@ user2119980:检查更新。 – 2013-03-07 05:21:30

1

不要在THEN 'ST_HOURS_SUM' ELSE 0 END使用'。这样“ST_HOURS_SUM”是一个字符串,而不是列名。删除'它应该工作。

+0

它没有工作,我一直写这样的代码,所以这是令人困惑 – user2119980 2013-03-06 13:03:32

+0

@ user2119980请发布确切的错误信息。 – fancyPants 2013-03-06 13:41:37