这是 MSSQL CASE 语句的好场景吗? [复制]

Posted

技术标签:

【中文标题】这是 MSSQL CASE 语句的好场景吗? [复制]【英文标题】:Is this a good scenario for MSSQL CASE statement? [duplicate] 【发布时间】:2014-04-10 07:35:31 【问题描述】:

我正在尝试将一些工作从 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 是什么?

【问题讨论】:

我找到了***.com/questions/63447/…,但我不知道如何将该示例转化为我的场景。 我会考虑返回一个描述性的 CSS 类名。像Error,Warning,Caution,OK 这样的东西。这样,如果您必须更改颜色,则可以通过 CSS 而不是 SQL 为此投票:“我正在尝试将一些工作从 CF 服务器转移到 SQL Server (2008)。” 【参考方案1】:

你已经接近语法了,虽然你最多只需要一个 AS 来给列命名,所以你可以有这样的东西(当然,我已经梦想了值来说明选项):

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

【讨论】:

绝对完美。谢谢你。当 SO 说时间已过时,我会批准它。

以上是关于这是 MSSQL CASE 语句的好场景吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP 和 MSSQL 准备好的语句

我可以使用带有两个变量的case / switch语句吗?

quartus ii中case语句里能再嵌套case吗?

如何使用 SQL 中的 Case 语句将数据插入临时表

在 Ansible/Jinja2 中设置 var 的 case 语句

SWITCH语句中的case后可以是字符串吗?