2012-02-04 42 views
1

以下語句是否有縮寫形式?具有多個值的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' 

回答

3

在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。

+0

實際上'DECODE'不會允許任何捷徑AFAIK ... – Yahia 2012-02-04 16:38:54

+0

不能使用不平等DB,但你可以做DECODE (1,'Alive',2,'Alive',3,'Alive',4,'Dying','Dead')。事實上,這可能實際上更緊湊。 – eaolson 2012-02-04 16:41:49

+0

也許 - 但你必須輸入「Alive」3次... – Yahia 2012-02-04 16:44:16

4

取決於您使用以下將做的伎倆

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