Сгруппируйте предложение и проверьте, совпадают ли значения - PullRequest
0 голосов
/ 07 марта 2019

У меня есть таблица, как показано ниже.

Site  |   VSID1 |  VSID2 | Status
C1    |    0.1  |  1     |  Rejected
C1    |    0.1  |  1     |  Agreed
C1    |    0.2  |  2     |  Rejected
C1    |    0.2  |  2     |  Rejected

Я хочу получить результат в запросе и хочу, чтобы все записи были уникальными и имели одинаковый статус, например сгруппируйте по (site, VSID1, VSID2) и выберите запись, проверьте, все ли строки имеют статус «Отклонено»

Ответом должен быть второй набор записей. Первый набор записей не следует выбирать, поскольку он отклонен и согласован. Второй набор, с другой стороны, должен быть выбран, поскольку оба отклонены.

Любая помощь, высоко ценится.

Я пытался иметь (instr (status, 'Rejected')> 1

Ответы [ 3 ]

1 голос
/ 07 марта 2019

С макс. И мин.:

select Site, VSID1, VSID2, min(Status) Status
from tablename 
group by Site ,VSID1 , VSID2
having min(Status)='Rejected' and max(Status)='Rejected'

Если вы хотите, чтобы все строки из таблицы:

select t.* from tablename t inner join (
    select Site, VSID1, VSID2
    from tablename 
    group by Site ,VSID1 , VSID2
    having min(Status)='Rejected' and max(Status)='Rejected'
) tt
inner join tt.Site = t.Site and tt.VSID1 = t.VSID1  and tt.VSID2 = t.VSID2
1 голос
/ 07 марта 2019

Вы можете попробовать ниже -

select Site ,VSID1 , VSID2 , Status
group by Site ,VSID1 , VSID2 , Status
having sum(case when status='Rejected' then 0 else 1 end)=0

ИЛИ Correlatd подзапрос

select * from tablename a where not exists (select 1 from tablename b where a.Site
=b.site and a.VSID1=b.VSID1  and a.VSID2=b.VSID2 where status<>'Rejected')
0 голосов
/ 07 марта 2019
SELECT site, VSID1, VSID2, max(Status)
FROM tbl
GROUP BY site, VSID1, VSID2
HAVING COUNT(DISTINCT Status) = 1

max(Status) может выглядеть не очень хорошо, но это поможет вам, если вам нужно, чтобы Status был на выходе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...