SQL Fiddle
Настройка схемы Oracle 11g R2 :
CREATE TABLE t1 ( orig_code, send_id, ref_no ) AS
SELECT 'ABCD001', 'ABCD001', '35RE777' FROM DUAL UNION ALL
SELECT 'ABCDXXX', 'ABCDXXX', '35RE156' FROM DUAL UNION ALL
SELECT 'ABCD001', 'ABCD001', '20PS789' FROM DUAL UNION ALL
SELECT 'ABCDXXX', 'ABCDXXX', '25PS453' FROM DUAL UNION ALL
SELECT 'ABCD001', 'ABCD001', '30RE745' FROM DUAL UNION ALL
SELECT 'ABCDXXX', 'ABCDXXX', '55RE741' FROM DUAL UNION ALL
SELECT 'ABCD001', 'ABCD001', '25PS369' FROM DUAL UNION ALL
SELECT 'ABCDXXX', 'ABCDXXX', '21PS258' FROM DUAL;
Запрос 1 :
SELECT *
FROM t1
WHERE (
(orig_code, send_id) NOT IN (
('ABCD001', 'ABCD001'),
('ABCDXXX', 'ABCDXXX')
)
OR ( -- OR rather than AND
ref_no NOT LIKE '35RE%'
AND ref_no NOT LIKE '20PS%' -- AND rather than OR
)
)
Запрос 2 или, альтернативно, NOT(A) AND NOT(B) = NOT( A OR B )
и NOT(A) OR NOT(B) = NOT( A AND B )
:
SELECT *
FROM t1
WHERE NOT (
(orig_code, send_id) IN (
('ABCD001', 'ABCD001'),
('ABCDXXX', 'ABCDXXX')
)
AND (
ref_no LIKE '35RE%'
OR ref_no LIKE '20PS%'
)
)
Результаты :
| ORIG_CODE | SEND_ID | REF_NO |
|-----------|---------|---------|
| ABCDXXX | ABCDXXX | 25PS453 |
| ABCD001 | ABCD001 | 30RE745 |
| ABCDXXX | ABCDXXX | 55RE741 |
| ABCD001 | ABCD001 | 25PS369 |
| ABCDXXX | ABCDXXX | 21PS258 |