2013-01-11 35 views
1

我有以下代码。目的是获取AML_TYP_CD字段中的数据,这是他们完成的教育水平。 20和25与30/35/40/45是一样的,我需要写一个案例陈述来统计它们,所以25会返回20等,然后有大约50个其他代码用于教育水平我需要elimnate。什么是最好的办法做到这一点,因为我写的CASE陈述不起作用。 CASE语句将SELECT子句中去了,一个我写的不工作是使用CASE语句组合数据

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 
+2

请不要喊叫。 –

回答

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 
+0

工作正常!现在唯一的问题是将其余代码的VCHAR值转换为int值 – user1958651