Как этот ожидаемый вывод в SQL Server 2019 - PullRequest
0 голосов
/ 04 мая 2020
EventId   Status
-----------------
 1         A
 2         B
 1         B
 2         B
 3         A
 3         B
 4         B        

Вывод

EventId     Status
-------------------    
    2         B
    4         B

Как получить этот вывод?

Мне нужны только те идентификаторы событий, чей статус только «B», если какой-либо статус обозначен как «A», он также отменяет этот идентификатор события .... Я пытаюсь запросить как отдельный номер строки ... но я Я не получаю вывод ...

Любая помощь будет оценена

1 Ответ

1 голос
/ 04 мая 2020

Один метод использует агрегирование:

select eventid, max(status)
from t
group by eventid
having min(status) = max(status) and min(status) = 'B';

Есть много других способов. Например:

select distinct eventid, status
from t
where not exists (select 1 from t t2 where t2.eventid = t.eventid and t2.status <> 'B');

Или запутанное:

select eventId, status
from t
where status = 'B'
except
select eventId, 'B'
from t
where status <> 'B';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...