sql запрос для проверки наличия минимум 2 записей - PullRequest
0 голосов
/ 30 марта 2020

У меня есть такой вид:

select Horse_Name, LevelName, TYPE_NAME, Event_Name, Result_Name
from V_Horse_Transaction

мой результат такой:

Horse_Name    LevelName   TYPE_NAME Result_Name
DXB-HORSE     QUALIFIER    40        PASS
DXB-HORSE     QUALIFIER    40        PASS
DXB-HORSE     QUALIFIER    80        PASS
DXB-HORSE     QUALIFIER    80        PASS
INDIAN-HORSE    QUALIFIER  40        FAIL
DXB-HORSE      QUALIFIER   40        PASS
INDIAN-HORSE    QUALIFIER  40         PASS
INDIAN-HORSE    QUALIFIER  80         FAIL
INDIAN-HORSE    QUALIFIER  80         FAIL

В моем запросе я хочу показать только имя лошади, которое имеет минимум 2 записи из 40 и 2 записи по 80, и оба типа результата «Проход» и LevelName = «QUALIFIER». поэтому я написал запрос так. Но я не получаю никаких записей: мой запрос выглядит так:

select  Horse_Name, COUNT(2)
from V_Horse_Transaction
where TYPE_NAME = 40 and TYPE_NAME = 80
  and Result_Name = 'PASS' and LevelName = 'QUALIFIER' 
group by TYPE_NAME, Result_Name, LevelName, Horse_Name

1 Ответ

1 голос
/ 30 марта 2020

Вы можете group by Horse_Name и задать условия в пункте having:

select Horse_Name
from V_Horse_Transaction
where TYPE_NAME in (40, 80) and Result_Name = 'PASS' and LevelName = 'QUALIFIER' 
group by Horse_Name
having count(case when TYPE_NAME = 40 then 1 end) >= 2
   and count(case when TYPE_NAME = 80 then 1 end) >= 2

См. Демоверсию . Результаты:

| Horse_Name |
| ---------- |
| DXB-HORSE  |
...