статус последней записи в sql - PullRequest
1 голос
/ 05 мая 2020

Я новичок в sql, и мне было интересно, могу ли я получить некоторую помощь

У меня есть таблица, в которой разные объекты возвращают годен / сбой и метку времени

i ' Я хотел бы вывести сущности, которые вернули PASS при их последнем прогоне

, пока у меня есть

SELECT ENTITY
FROM TABLE T
WHERE STATUS IN (
        SELECT MAX(T2.DATE) FROM TABLE T2)
AND STATUS='PASS'

, что неправильно, но я не знаю достаточно, чтобы исправить

ТАБЛИЦА

  entity    status  date
    A   PASS    20180703
    A   FAIL    20180703
    A   PASS    20180704
    B   PASS    20180304
    B   FAIL    20180327
    B   FAIL    20180513
    B   PASS    20180703
    C   PASS    20180211
    C   FAIL    20180304
    D   FAIL    20180622
    D   PASS    20180703
    D   PASS    20180716
    D   PASS    20180725
    D   FAIL    20180816

1 Ответ

0 голосов
/ 05 мая 2020

Мне нравится использовать для этого агрегирование. Вот один из методов:

select entity
from t
group by entity
having max(date) = max(case when status = 'PASS' then date end);

При этом максимальная дата для объекта сравнивается с максимальной датой 'PASS'. Когда они равны, последний статус будет 'PASS".

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