【发布时间】:2018-01-25 02:01:15
【问题描述】:
我的查询需要一些帮助...我正在尝试计算每个房子的名字,所有 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#
期望的结果:
房子 1 - 计数是 3 / 房子 2 - 计数是 2 / 房子 3 - 计数是 1
...根据我当前的查询,count 的结果将只有 3 个
【问题讨论】:
-
它们总是用逗号分隔吗?
-
如果您能够更改数据库架构,我建议您改为这样做。列中的逗号分隔值不是一个好主意。理想情况下,您应该有一个
HouseName表,每行只有一个房子/名称组合。然后你的查询就变成了一个简单的计数/组。 -
你有没有名字,姓氏或任何其他逗号的可能性?
-
对不起,我有点(非常)模糊......逗号只是分隔名称。如果我把它写在一个问答段落中,那就是……彼得、保罗和玛丽住在 1 号房子里。莎拉和莎莉住在 2 号房子里。乔住在 3 号房子里。人们怎么可能住在 1 号房子里和房子 2 和房子 3....回答,恭敬地是 3,2,1
-
我很确定我需要使用计数器(循环?),但在 stackoverflow 或在线上找不到任何解决此问题的内容...
标签: sql sql-server