我正在尝试在Sql中使用“Not Equal”命令,但它似乎不起作用。当所有3个字段(status1,status2和status3)不等于Yes时,我想得到总计数。出于某种原因,我得到了0条记录。
SELECT
COUNT(ID) from [maintable]
WHERE
status1 <> 'YES'
and status2 <> 'YES'
and status3 <> 'YES'
以上查询不会生成任何结果。我在这做错了什么?谢谢
答案 0 :(得分:10)
试试这个:
SELECT
COUNT(ID) from [maintable]
WHERE
COALESCE(status1, '') <> 'YES'
AND COALESCE(status2, '') <> 'YES'
AND COALESCE(status3, '') <> 'YES'
null
值不是<> 'YES'
,它们未定义。
答案 1 :(得分:0)
尝试使用EXCEPT。
SELECT
COUNT(ID) from [maintable]
EXCEPT
SELECT
COUNT(ID) from [maintable]
WHERE
status1 = 'YES'
and status2 = 'YES'
and status3 = 'YES'
答案 2 :(得分:0)
SELECT
COUNT(ID) from [maintable]
WHERE
NVL(status1, 'NO') <> 'YES'
NVL COALESCE(status2, 'NO') <> 'YES'
NVL COALESCE(status3, 'NO') <> 'YES'
我们可以在 null 情况下使用 nvl