在 Select 语句中使用“Case”时出错

问题描述 投票:0回答:2

需要根据某列中的信息更改该列的查询输出。

表 AA 中的当前信息:

ID1 ID2 ID3 ID4 ID5 ID6 ID7

10  11  12   2  14  15  16                    
20  21  22   3  24  25  26                     
30  31  32   4  34  35  36                     
40  41  42   5  44  45  46                    

我尝试过的查询:

SELECT  ID1
       ,ID2
       ,ID3
       ,ID4
       ,ID5
       ,ID6
       ,ID7

Case
  WHEN ID4 = 2 THEN 'V'
  WHEN ID4 = 3 THEN 'M'
  WHEN ID4 = 4 THEN 'A'
  Else 'ZZ'
  END

FROM dbo.AA

我期待以下内容:

表AA

ID1 ID2 ID3 ID4 ID5 ID6 ID7

10  11  12   V  14  15  16                    
20  21  22   M  24  25  26                     
30  31  32   A  34  35  36                     
40  41  42  ZZ  44  45  46   

收到错误:

关键字“Case”附近的语法不正确。

我之前没有尝试过使用 Case,甚至不确定我的查询是否正确使用了它。

sql sql-server select case sql-server-2014
2个回答
0
投票

使用

CASE
表达式的两种方法:

  SELECT CASE WHEN 1 = 2 AND 3 = 3 THEN 'This'
              WHEN 1 = 1 AND 3 = 3 THEN 'That'
              ELSE 'The Other'
         END AS CaseOne,
         CASE 1 WHEN 1 THEN 1 
                WHEN 2 THEN 2
                ELSE 3 
          END
     AS CaseTwo;
案例一 案例二
那个 1

基本上,如果您有简单的比较,您可以使用快捷方式版本,或者您始终可以使用完整语法。重要的是要记住 CASE 是按顺序评估的。第一个完整的匹配将分配该值,无论其他匹配如何。

https://learn.microsoft.com/en-us/sql/t-sql/language-elements/case-transact-sql?view=sql-server-ver16


0
投票

更正以下查询:

SELECT  ID1
       ,ID2
       ,ID3
       ,ID4
       ,ID5
       ,ID6
       ,ID7
       ,
Case
  WHEN ID4 = 2 THEN 'V'
  WHEN ID4 = 3 THEN 'M'
  WHEN ID4 = 4 THEN 'A'
  Else 'ZZ'
  END As ID8

FROM dbo.AA

感谢 siggemannen 和 Jonas Metzler 帮助回答这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.