【发布时间】:2018-01-29 19:53:07
【问题描述】:
我的查询需要一些帮助...我正在尝试计算每个房子的名字,所有 col# 都是名字。
查询:
SELECT
House#,
COUNT(CASE WHEN col#1 IS NOT NULL THEN 1 ELSE 0 END) +
COUNT(CASE WHEN col#2 IS NOT NULL THEN 1 ELSE 0 END) +
COUNT(CASE WHEN col#3 IS NOT NULL THEN 1 ELSE 0 END) AS count
FROM
myDB
WHERE
House# IN (house#1, house#2, house#3)
GROUP BY
House#
期望的结果:
house 1 - the count is 3
house 2 - the count is 2
house 3 - the count is 1
...根据我当前的查询,count 的结果将只有 3 个
【问题讨论】:
-
使用
sum而不是count -
请张贴 DDL,DML 所涉及的表格,不要张贴图片。拥有此信息有助于其他人快速重现您的问题并更好地解决问题。以下是一些可能有助于您理解的示例。 --样本数据
create table t1 ( id int ) insert into t1 values (1), (2), (1)我当前的查询/我尝试过的内容:select id,count(*) as cnt from t1 group by id我当前的结果:id cnt 1 2 2 1我的预期结果:id cnt 1 2 2 1 1 2 -
NULL 不包含在 COUNT 中。只需松开 CASE 表达式,您应该会很好。
-
我使用空值的原因是每个房子都有多个 col#,每个 col# 可以有一个名字......或者没有。有些房子可以有多个不同的名称,我正在寻找不同名称在房子中出现的次数,所以我使用 null 来创建一个计数器......希望有助于澄清我的问题。
标签: sql-server tsql