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'

null の場合に nvl を使用できます

于 2021-06-04T10:21:26.990 に答える