SQL-запрос, который просматривает несколько строк для значения столбца - PullRequest
0 голосов
/ 14 марта 2019

Я пытаюсь создать запрос, который выбирает строки на основе повторяющегося значения в столбце

Row 1:             Row 2:            Row 3:           Row 4:
Record_Key = 1     Record_Key = 1    Record_Key = 2   Record_Key = 3
Type = 'AED'       Type = 'ACD'      Type = 'AED'     Type = 'AED'

Я хочу выбрать только те строки, которые имеют Record_Key из AED, с которыми ACD не связано Record_Key.

Итак, в моем примере я хочу выбрать только Row 3 и Row 4.

Не могу сказать:

Select * From Table Where Type != 'ACD'

потому что это вернет Row 1, Row 3 и Row 4, когда я хочу только Row 3 и Row 4. Я не могу обдумать структурирование этого запроса, или SQL и предоставленная таблица не допускают такого выбора?

Ответы [ 3 ]

0 голосов
/ 14 марта 2019

использование не существует

    select t1.* from tab t1
    where not exists ( select 1 from tab t2 where t1.Record_Key=t2.Record_Key
                                       and type='ACD')

вывод

Record_Key  Type
2           AED
3          AED

демо

0 голосов
/ 14 марта 2019

Вы можете group by record_key и хранить только record_key с, где единственное существующее type равно 'AED':

select record_key, max(type) type 
from tab
where type in ('AED', 'ACD') 
group by record_key
having min(type) = 'AED' and max(type) = 'AED'
0 голосов
/ 14 марта 2019

Вы можете использовать not exists:

select t.*
from table t
where t.type = 'AED' and 
      not exists (select 1 from table t1 where t1.record_key = t.record_key and t1.type = 'ACD');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...