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 等效项