使用case语句计算非空列的数量

Ben*_*njo 3 sql sql-server

我的查询需要一些帮助...我想在每个房子里计算一些名字,所有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#
Run Code Online (Sandbox Code Playgroud)

期望的结果:

房子1 - 计数是3 /房子2 - 计数是2 /房子3 - 计数是1

...使用我当前的查询,计数结果将只有3

Lam*_*mak 6

在这种情况下,似乎计数名称与计算逗号(,)加一:

SELECT House_Name, 
       LEN(Names) - LEN(REPLACE(Names,',','')) + 1 as Names
FROM dbo.YourTable;
Run Code Online (Sandbox Code Playgroud)