myTable имеет составной ключ, состоящий из столбцов A и B (всего столбцов A, B, C, D, E).
Я хочу исключить/игнорировать записи, в которых значение D (скажем, номер заказа) одинаково, а E (скажем, решение) равно Y в одном, но N или Null в другом. (означает, что все двойные записи с одинаковым порядковым номером (равным значением D), которые были заказаны первыми (поэтому E=Y), а затем снова отменены (поэтому E=N), следует игнорировать)
Итак, я вытащил A, B для всех записей, где D один и тот же, но E - это Y в одной и N в другой.
SELECT *
FROM myTable A, myTable B
WHERE
(A.D=B.D)
AND
((A.E ='Y' AND (B.E ='N' OR B.E IS NULL)) OR (B.E='Y' AND (A.E='N' OR A.E IS NULL)))
Теперь моим окончательным результатом должны быть все записи из myTable, но не записи, найденные выше.
Я написал запрос на соединение, но он не работает должным образом. В основном проблема заключается в том, как сравнить два составных ключа?
Образец данных:
A B C D E
=========================
1 A xyz ONE Y
2 B pqr TWO Y
3 C lmn ONE N
4 D abc THREE Y
5 E ijk FOUR Y
=========================
Таким образом, моим выводом должны быть записи 2,4 и 5. Так как 1 и 3 будут проигнорированы. Потому что 1.D = 3.D и 1.E — это Y, а 3.E — это N.
Спасибо, Ник