0

case when ステートメントを使用して特定の暦年のすべてのデータを選択するコードがあり、その年に学習のために蓄積されたすべての時間を合計する必要があり、次のようにコードを設定しています。

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_SUM2010 年の各人について合計する必要があるのは、これです。ST_SUM_HOURS特定のトレーニングの時間を含む列であり、設定された年の従業員ごとに合計する必要があります。

4

3 に答える 3

1

前述のように、引用符を削除します。数字で始まる列エイリアスを使用することはできません。それを逃れる:

...ELSE 0 END) AS [2010_Hours]
于 2013-03-06T13:15:08.467 に答える
1

'では使用しないでくださいTHEN 'ST_HOURS_SUM' ELSE 0 END。このように、「ST_HOURS_SUM」は文字列であり、列名ではありません。を削除する'と、機能するはずです。

于 2013-03-06T13:01:16.303 に答える
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
于 2013-03-06T13:00:24.327 に答える