如何在进行交叉表查询时计算空值?
我有一个有三个列的表[id,name,answer]
我有以下记录:
ID NAME ANS
1 ABC 1
1 ABC 0
1 ABC NULL
2 XYZ 1
2 XYZ NULL
2 XYZ NULL
2 XYZ 1
2 XYZ 0
1 ABC 0
Run Code Online (Sandbox Code Playgroud)
现在我想得到我的结果:
ID Name NULLCOUNT TRUE COUNT FALSE COUNT
1 ABC 1 1 2
2 XYZ 2 2 1
Run Code Online (Sandbox Code Playgroud)
我正在使用以下SQL语句:
select ID, NAME,
sum(case ANS when null then 1 else 0 end) as NULLCOUNT,
sum(case ANS when 1 then 1 else 0 end) as TRUECOUNT,
sum(case ANS when 0 then 1 else 0 end) as FALSECOUNT
from
TBL1
Group By ID, Name
Run Code Online (Sandbox Code Playgroud)
得到我的结果:
ID Name NULLCOUNT TRUE COUNT FALSE COUNT
1 ABC 0 1 2
2 XYZ 0 2 1
Run Code Online (Sandbox Code Playgroud)
NULL Count正在出错.为什么以及如何解决这个问题?
我相信而不是这个:
sum(case ANS when null then 1 else 0 end) as NULLCOUNT
Run Code Online (Sandbox Code Playgroud)
你应该用这个:
sum(case when ANS is null then 1 else 0 end) as NULLCOUNT
Run Code Online (Sandbox Code Playgroud)