嵌套的SQL case语句

时间:2015-08-14 19:52:55

标签: sql sql-server case-statement

我试图提升单位状态。我的案例陈述我做错了什么?我是SQL的新手。

CASE WHEN [sStatus] LIKE '%Notice%'
                THEN 'Notice'
            ELSE 
                CASE WHEN [sStatus] LIKE '%Occupied%'
                        THEN 'Occupied'
                    ELSE 
                        CASE WHEN [sStatus] LIKE '%Vacant%'
                                THEN 'Vacant'
                            ELSE [sStatus]
        END as [Status]

enter image description here

谢谢!

3 个答案:

答案 0 :(得分:2)

您的案例陈述缺失了。但是,它们不需要首先嵌套:

(CASE WHEN [sStatus] LIKE '%Notice%' THEN 'Notice'
      WHEN [sStatus] LIKE '%Occupied%' THEN 'Occupied'
      WHEN [sStatus] LIKE '%Vacant%' THEN 'Vacant'
      ELSE [sStatus]
 END) as [Status]

而且,如果您只想要第一个单词,则根本不需要case

SUBSTRING(sStatus, CHARINDEX(' ', sStatus + ' '), LEN(sStatus))

答案 1 :(得分:1)

您收到错误是因为您有3个CASE语句且只有一个END。

但是,根本不需要嵌套这些CASE语句。你可以这样做:

CASE 
  WHEN [sStatus] LIKE '%Notice%'
                THEN 'Notice'
  WHEN [sStatus] LIKE '%Occupied%'
                THEN 'Occupied'
  WHEN [sStatus] LIKE '%Vacant%'
                THEN 'Vacant'
  ELSE [sStatus]      
END as [Status]

答案 2 :(得分:1)

CASE WHEN [sStatus] LIKE '%Notice%' THEN 'Notice'
     WHEN [sStatus] LIKE '%Occupied%' THEN 'Occupied'
     WHEN [sStatus] LIKE '%Vacant%' THEN 'Vacant'
     ELSE [sStatus] END as Status

你不需要所有其他的