具有多个值的SQL Case

时间:2012-02-04 16:33:16

标签: 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

例如

CASE StatusID WHEN 1,2,3 THEN 'Alive'

CASE StatusID WHEN 1 OR 2 OR 3 THEN 'Alive'

2 个答案:

答案 0 :(得分:5)

取决于您使用的数据库,以下将执行操作

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

答案 1 :(得分:4)

在Oracle中,假设statuid永远不是< = 0:

SELECT Name, CASE WHEN statusid < 4 THEN 'Alive'
                  WHEN statusid = 4 THEN 'Dying'
                  ELSE 'Dead' END AS some_alias
  FROM people

您也可以使用DECODE。