2013-03-06 71 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