Попробуйте:
SELECT t1.SL, t1.Number, t1.Type
FROM mytable t1
WHERE t1.Type = 'A' OR NOT EXISTS
(
SELECT 1
FROM mytable t2
WHERE t2.Number = t1.Number AND t2.Type = 'A'
)
Демонстрация здесь
Объяснение:
Theзапрос выбирает все A
строк из-за
t1.Type = 'A'
и всех B
строк при условии, что является запросом NOT EXISTS
оператор возвращает нет строк.Этот подзапрос
SELECT 1
FROM mytable t2
WHERE t2.Number = t1.Number AND t2.Type = 'A' -- t1 is a reference to the outer table
возвращает строку, если существует запись A
, имеющая тот же Number
, что и запись B
.