T-SQL计数IF函数等效项

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了T-SQL计数IF函数等效项相关的知识,希望对你有一定的参考价值。

我有四列:A团队,B团队,C团队,D团队。

每个行条目的每个列中可以包含是或否。例如这样:

A Team    B Team    C Team    D Team
------------------------------------
Yes       Yes       No        No

我想创建一个额外的列NumberofTeams,该列求和的地方是总和。因此,在这种情况下,它将返回2-表示涉及2个团队。

我打算通过CASE函数进行尝试,但是相信这必须涵盖每个单独的排列吗?

select 
    *, 
    NumberofTeams = select case 
                              when [A Team] = 'Yes' and [B Team] = 'Yes' 
                                 then 2 
                              when [A Team] = 'Yes' and [C Team] = 'Yes' 
                                 then 2

依此类推。

如果有'更清洁'的方式?

答案

这里是一种方法:

select
    t.*,
    case when [A Team] = 'Yes' then 1 else 0 end
        + case when [B Team] = 'Yes' then 1 else 0 end
        + case when [C Team] = 'Yes' then 1 else 0 end
        + case when [D Team] = 'Yes' then 1 else 0 end
        as NumberOfTeams
from mytable t
另一答案

在这里找到我的答案:How to return count if column values conatains specific string in it

对于任何想知道的人:

SELECT
    col1, col2, col3, col4,
    (CASE WHEN col1 LIKE '%[_]X%' THEN 1 ELSE 0 END +
     CASE WHEN col2 LIKE '%[_]X%' THEN 1 ELSE 0 END +
     CASE WHEN col3 LIKE '%[_]X%' THEN 1 ELSE 0 END +
     CASE WHEN col4 LIKE '%[_]X%' THEN 1 ELSE 0 END) AS cnt
FROM yourTable

以上是关于T-SQL计数IF函数等效项的主要内容,如果未能解决你的问题,请参考以下文章

等效于 Amazon Redshift 中的 T-SQL 表值构造函数?

如果条件不满足,则保留最后一个值的 if/elif/else 的 Numpy 等效项

T-SQL中等效的拆分函数?

在 PL/SQL Oracle 中需要此 T-Sql 函数的等效函数。如果有其他解决方案,那么流水线

.Net 的 SocketStream 等效项

SQL Server 'Resume Next' 等效项