3

次のコードがあります。Case ステートメントは、リストされた数値をテキストに変換し、残りのコードを NULL に変換していますが、次のエラーが引き続き発生します。RDG5 は、NULL に変換される多くのコードの 1 つです。何かご意見は?

    SELECT     dbo.TACCPLI.SYS_EMP_ID_NR, MAX(dbo.TACCPLI.AML_TYP_CD) AS DEG, (CASE WHEN dbo.TACCPLI.AML_TYP_CD IN (20, 25) 
                      THEN 'Associates' WHEN dbo.TACCPLI.AML_TYP_CD IN (30, 35) THEN 'Bachelors' WHEN dbo.TACCPLI.AML_TYP_CD IN (40, 45) 
                      THEN 'Masters' WHEN dbo.TACCPLI.AML_TYP_CD IN (50) THEN 'PhD' ELSE NULL END) AS Degree_Level, dbo.TACCPLI.AML_TYP_CD
FROM         dbo.TACCPLI RIGHT OUTER 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, dbo.TACCPLI.AML_TYP_CD
4

1 に答える 1

1

あなたのコメントに基づいて

うーん、case ステートメントを実行できるように、それを変換しようとしています。それが好きかどうかはわかりませんが、型の不一致のために解析に失敗したはずです。

ホー・ハム

これは壊れやすい厄介なボッジですが、AML_TYP_CD が常に最後の 2 文字が数値であることを信頼できる場合は、

CASE WHEN Right(dbo.TACCPLI.AML_TYP_CD,2) IN ('20', '25')

行く方法かもしれませんが、「20」や「25」などには独自の意味があるため、独自の列が必要です。

于 2013-01-11T22:23:13.073 に答える