【发布时间】:2020-06-02 22:43:18
【问题描述】:
我有四列:A Team、B Team、C Team、D Team。
每一行条目的每一列都可以包含“是”或“否”。比如像这样:
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
等等。
如果有“更清洁”的方式?
【问题讨论】:
-
如果您对每个真/假值使用
bit而不是散文,那将会“更干净”。这也将避免处理像'Y'、'?'和'Ω'这样的值。作为数字数据类型,位更容易添加。
标签: sql sql-server database tsql count