Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
嵌套SQL case语句_Sql_Sql Server_Case Statement - Fatal编程技术网

嵌套SQL case语句

嵌套SQL case语句,sql,sql-server,case-statement,Sql,Sql Server,Case Statement,我正在尝试恢复单位状态。我的案例陈述有什么错?我是SQL新手 CASE WHEN [sStatus] LIKE '%Notice%' THEN 'Notice' ELSE CASE WHEN [sStatus] LIKE '%Occupied%' THEN 'Occupied' ELSE

我正在尝试恢复单位状态。我的案例陈述有什么错?我是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]


谢谢大家!

您得到错误是因为您有3个CASE语句,只有一个END

但是,根本不需要嵌套这些案例语句。您可以简单地执行以下操作:

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

您得到错误是因为您有3个CASE语句,只有一个END

但是,根本不需要嵌套这些案例语句。您可以简单地执行以下操作:

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 WHEN [sStatus] LIKE '%Notice%' THEN 'Notice'
      WHEN [sStatus] LIKE '%Occupied%' THEN 'Occupied'
      WHEN [sStatus] LIKE '%Vacant%' THEN 'Vacant'
      ELSE [sStatus]
 END) as [Status]
而且,如果您只需要第一个单词,则根本不需要
大小写

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

你的案件陈述没有结尾。但是,它们首先不需要嵌套:

(CASE WHEN [sStatus] LIKE '%Notice%' THEN 'Notice'
      WHEN [sStatus] LIKE '%Occupied%' THEN 'Occupied'
      WHEN [sStatus] LIKE '%Vacant%' THEN 'Vacant'
      ELSE [sStatus]
 END) as [Status]
而且,如果您只需要第一个单词,则根本不需要
大小写

SUBSTRING(sStatus, CHARINDEX(' ', sStatus + ' '), LEN(sStatus))
你不需要所有这些


你不需要所有这些

错误是:关键字“as”附近的语法不正确。错误是:关键字“as”附近的语法不正确。我不知道我可以多次这样使用!非常感谢。使用子字符串会更有效吗?@Walker。它可能会稍微更有效率。我认为
substring()
like
在开头使用通配符要快。我不知道我可以在多次这样的情况下使用!非常感谢。使用子字符串会更有效吗?@Walker。它可能会稍微更有效率。我认为
substring()
比像
那样在开头使用通配符要快。