如何在進行交叉表查詢時計算空值?在MYSQL中計數空值
我有三個colums [ID,姓名,答案]
一個表,我有如下記錄:
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
現在我想獲得我的結果:
ID Name NULLCOUNT TRUE COUNT FALSE COUNT
1 ABC 1 1 2
2 XYZ 2 2 1
我正在使用以下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
獲得我的結果:
ID Name NULLCOUNT TRUE COUNT FALSE COUNT
1 ABC 0 1 2
2 XYZ 0 2 1
NULL Count正在出錯。爲什麼以及如何解決這個問題?
thnx它的工作,但想問爲什麼它不同於truecount和falsecount。對於truecount和falsecount,它們不應該一樣嗎?哪一個是正確的休息別人 – KoolKabin 2010-08-02 13:08:37
null就像是undefined。未定義!=未定義。 – foret 2010-08-02 13:09:45
@KoolKabin:因爲您在'case'構造中隱式比較ANS和NULL。但是,NULL不等於任何東西,甚至不等於:NULL!= NULL(計算結果爲true)。您需要使用特殊的「IS NULL」結構:「NULL IS NULL」(計算結果爲true)。狡猾,是的。有用的,也是。 – Piskvor 2010-08-02 13:14:26