需要根据某列中的信息更改该列的查询输出。
表 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,甚至不确定我的查询是否正确使用了它。
使用
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 是按顺序评估的。第一个完整的匹配将分配该值,无论其他匹配如何。
更正以下查询:
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 帮助回答这个问题。