6

在此处输入图像描述

我正在尝试在 Sql 中使用“不等于”命令,但它似乎不起作用。当所有 3 个字段(status1、status2 和 status3)不等于 Yes 时,我想获得总计数。出于某种原因,我得到 0 条记录。

SELECT
    COUNT(ID) from [maintable]
WHERE 
    status1 <> 'YES'
    and status2 <> 'YES'
    and status3 <> 'YES'

上述查询不会产生任何结果。我在这里做错了什么?谢谢

4

3 回答 3

14

试试这个:

SELECT
    COUNT(ID) from [maintable]
WHERE
    COALESCE(status1, '') <> 'YES'
    AND COALESCE(status2, '') <> 'YES'
    AND COALESCE(status3, '') <> 'YES'

null值不是<> 'YES',它们是未定义的。

合并

于 2013-01-07T16:47:55.420 回答
1

尝试使用 EXCEPT。

SELECT
    COUNT(ID) from [maintable]
EXCEPT
SELECT
    COUNT(ID) from [maintable]
WHERE 
    status1 = 'YES'
    and status2 = 'YES'
    and status3 = 'YES'
于 2016-05-26T21:41:27.433 回答
0
SELECT
    COUNT(ID) from [maintable]
WHERE
    NVL(status1, 'NO') <> 'YES'
    NVL COALESCE(status2, 'NO') <> 'YES'
    NVL COALESCE(status3, 'NO') <> 'YES'

我们可以将 nvl 用于 null 情况

于 2021-06-04T10:21:26.990 回答