1

私は次のコードを持っています。目的は、彼らが終えた教育のレベルであるフィールドAML_TYP_CDのデータを取得することです。20と25は30/35/40/45と同じで、25が20などとして返されるように、それらを一緒にカウントするcaseステートメントを作成する必要があります。その後、教育レベルに約50のコードがあります。私が排除する必要があること。私が書いているCASEステートメントが機能しないため、これを行うための最良の方法は何ですか。CASEステートメントはSELECT句に入れられます。私が書いたもので機能しないのは

CASE WHEN (AML_TYP_CD) = '20' OR '25' THEN Bachelors ELSE NULL END) As Bach_Degree

残りのコードは次のとおりです。

    SELECT     dbo.TACCPLI.SYS_EMP_ID_NR, MAX(dbo.TACCPLI.AML_TYP_CD) AS DEG
FROM         dbo.TACCPLI INNER JOIN
                          (SELECT     dbo.v_TMS_employee_HR.GEMSID, dbo.v_TMS_employee_HR.TMS_ID
                            FROM          dbo.v_TMS_employee_HR INNER JOIN
                                                   dbo.v_sc17_TMS_Data_Career_Meeting_Rating ON 
                                                   dbo.v_TMS_employee_HR.TMS_ID = dbo.v_sc17_TMS_Data_Career_Meeting_Rating.Employee_ID
                            WHERE      (LEFT(dbo.v_sc17_TMS_Data_Career_Meeting_Rating.Meeting_Readiness_Rating, 2) IN ('14', '15')) AND 
                                                   (dbo.v_TMS_employee_HR.Job_Group_Code >= '72') AND (dbo.v_TMS_employee_HR.Job_Group_Code <= '79') AND 
                                                   (dbo.v_sc17_TMS_Data_Career_Meeting_Rating.Plan_Year = 2012) AND (dbo.v_TMS_employee_HR.Region NOT IN ('12', '13', '16', '17'))
                            GROUP BY dbo.v_sc17_TMS_Data_Career_Meeting_Rating.Meeting_Readiness_Rating, dbo.v_TMS_employee_HR.GEMSID, dbo.v_TMS_employee_HR.TMS_ID) 
                      AS HPS ON dbo.TACCPLI.SYS_EMP_ID_NR = HPS.TMS_ID
GROUP BY dbo.TACCPLI.SYS_EMP_ID_NR
4

1 に答える 1

1

あなたの構文は間違っています。次のようなものが必要になります。

SELECT 
    CASE WHEN AML_TYP_CD = '20' OR AML_TYP_CD = '25' THEN 'Bachelor''s' 
         WHEN AML_TYP_CD = '30' OR AML_TYP_CD = '35' THEN 'Whatever'
         --Other cases
         WHEN AML_TYP_CD = '90' OR AML_TYP_CD = '95' THEN 'Something'
         ELSE 'Other'
    END AS Degree

または、私の意見では少しきれいです:

SELECT 
    CASE WHEN CONVERT(INT, AML_TYP_CD) < 30 THEN 'Bachelor''s' 
         WHEN CONVERT(INT, AML_TYP_CD) < 40 THEN 'Whatever'
         --Other cases
         WHEN CONVERT(INT, AML_TYP_CD) < 100 THEN 'Something'
         ELSE 'Other'
    END AS Degree
于 2013-01-11T16:49:21.390 に答える