2016-10-04 2 views
1

выборки данных (Oracle DB)Fetch результаты, которые не имеют конкретных значений

HID Result ResultDate 
6150 Interim 23-03-1990 
6150 FINAL  24-03-1990 
6150 Interim 25-05-1990 
6180 Interim 30-08-2016 
6190 Interim 31-08-2016 

Меня попросили, чтобы найти все компании HID, которые не имеют окончательных результатов.

И ожидаемый выход

HID Result ResultDate 
    6180 Interim 30-08-2016 
    6190 Interim 31-08-2016 

ответ

2

Вот один вариант count с case:

select hid 
from yourtable 
group by hid 
having count(case when result = 'FINAL' then 1 end) > 0 

Это возвращает 6180 и 6190, поскольку они не имеют каких-либо соответствующие строки с result = 'final'.


Учитывая внесенные изменения, вот вариант с использованием not exists:

select * 
from yourtable y 
where not exists (
    select 1 
    from yourtable y2 
    where y.hid = y2.hid and y2.result = 'FINAL' 
) 
+0

Совершенная :) Большое спасибо –

Смежные вопросы