Я пытаюсь достичь того, что кажется простым, но я не могу этого понять. У меня есть таблица test_score ..
----------------------
ID | Date | Score
---------------------
345 | dt1 | 80
346 | dt1 | NULL
347 | dt1 | NULL
345 | dt1 | NULL
348 | dt2 | 75
В таблице может быть несколько записей с парой ID_Date .. например, для ID 345 и dt1 есть две записи, одна с оценкой, а другая NULL значение. Я хочу получить ТОЛЬКО те строки, которые имеют значения NULL.
В этом примере возвращать строки с идентификаторами 346 и 347 .. Это ДОЛЖНА быть пара ID_Date, и оба они имеют значения NON-NULL
Мои попытки на данный момент: Выбрать строки, для которых оценка равна NULL, ID и дата не равны NULL. INTERSECT выбрать строки, для которых оценка NOT NULL, а ID и Date НЕ NULL. Это дает мне количество строк, в которых эти пары id_date существуют в ОБЕИХ условиях score_is_null и score_is_not_null. Я вычитаю это из общего количества строк, в которых оценка равна NULL ... но мои результаты неверны.
Второй подход.
SELECT id || date AS temp, count(*)
FROM test_score
WHERE score IS NULL AND id IS NOT NULL AND date IS NOT NULL
AND pairs NOT IN
(SELECT id || date AS temp
FROM test_Score
WHERE score IS NOT NULL AND id IS NOT NULL AND date IS NOT NULL)
Есть предложения?