使用>在case语句中导致语法错误

时间:2015-06-03 10:54:55

标签: sql-server tsql casting sql-server-2008-r2 case

使用以下代码在“>”附近给出了错误的语法Long字段中的数据如下所示:

Review Body 3,
Review body 6,
Aprentice,

我已经在cirlces中进行了几个小时的训练以对此进行排序,是因为我在计算中使用了文本函数(右)。

SELECT TOP 1000 [Id]
      ,[Short]
      ,[Long]
      ,CASE ISNUMERIC(RIGHT( grade.Long , 1 )) WHEN  cast(RIGHT( shiftname.Long , 1 )as int) > 4  THEN 'Qualified' ELSE 'Unqualified' END  as Grade

  FROM [RosterPro_Live].[dbo].[lookup_PostGrade] as grade

1 个答案:

答案 0 :(得分:2)

在语法上,如L.V. Karlsen表示,此问题与SQL Server CASE .. WHEN .. expressionCASE Statement SQL 2012重叠。

你的问题不够明确,但是在这个CASE(双关语的一半)中,看起来你可能真的想要NEST两个CASE表达式并使用CASE语法的两种变体:

SELECT TOP 1000 [Id]
  ,[Short]
  ,grade.[Long]
  ,CASE ISNUMERIC(RIGHT( grade.Long , 1 )) 
    WHEN 1 THEN
        CASE WHEN  cast(RIGHT( shiftname.Long , 1 )as int) > 4  THEN 'Qualified' ELSE 'Unqualified Shift' END  
    WHEN 0 THEN 
        'Unqualified Grade'
    END                                                                                 as Grade
FROM [dbo].[lookup_PostGrade] as grade
-- assume join to shiftname is missing    

请注意,WHEN 0可以是ELSE

相关问题