This question already has answers here:
How do I perform an IF…THEN in an SQL SELECT?

(31个答案)


7年前关闭。




我正在尝试将一些工作从CF服务器转移到SQL Server(2008)。

我正在运行查询,返回的statusID值对应于4种颜色(绿色,黄色,橙色和红色)之一。
select id, statusID
from table

如果这是使用case语句的理想情况,这是正确的吗?
select id,
    case
        when statusid in (1,20,24)
            then 'red'
    END as xxxx) as yyyy, *
from TABLE

如果这是正确的话,上面的xxxx和yyyy会是什么?

最佳答案

您与语法很接近,尽管您只希望最多一个AS为该列命名,所以您可能会有类似的内容(当然,我梦dream以求地说明了这些选项):

SELECT      id,
            CASE
                WHEN statusid IN (1,20,24) THEN 'red'
                WHEN statusid IN (2,30,34) THEN 'yellow'
                WHEN statusid 8 THEN 'orange'
                WHEN statusid > 35 THEN 'green'
                ELSE 'unrecognised'
            END AS ColorName,
            statusid

FROM        dbo.table

10-07 19:16
查看更多