具有多个值的SQL Case

gri*_*ner 3 sql

以下陈述是否有浓缩形式?

SELECT Name, Case StatusID WHEN 1 THEN 'Alive' WHEN 2 THEN 'Alive' WHEN 3 THEN 'Alive' WHEN 4 THEN 'Dying' ELSE 'Dead' END FROM People
Run Code Online (Sandbox Code Playgroud)

例如

CASE StatusID WHEN 1,2,3 THEN 'Alive'
Run Code Online (Sandbox Code Playgroud)

要么

CASE StatusID WHEN 1 OR 2 OR 3 THEN 'Alive'
Run Code Online (Sandbox Code Playgroud)

eao*_*son 5

在 Oracle 中,假设 statuid 从不 <= 0:

SELECT Name, CASE WHEN statusid < 4 THEN 'Alive'
                  WHEN statusid = 4 THEN 'Dying'
                  ELSE 'Dead' END AS some_alias
  FROM people
Run Code Online (Sandbox Code Playgroud)

您也可以使用解码。


Yah*_*hia 5

根据你使用的数据库,下面的方法就可以了

SELECT 
Name, 
Case WHEN StatusID  IN ( 1, 2, 3 ) THEN 'Alive' WHEN StatusID = 4 THEN 'Dying' ELSE 'Dead' END 
FROM People
Run Code Online (Sandbox Code Playgroud)