Допустим, у меня есть таблица ClientStatusHistory
Содержит историю изменений статуса определенного Client
.
Таблица выглядит так:
(Даты в формате: ДД / ММ / ГГГГ)
ClientStatusHistory:
(есть автоинкрементный столбец PK с именем ID)
ClientID | StatusID | DateStarted | DateEnded
1 | 5 | 01/01/2000 | 01/01/2019
1 | 7 | 01/01/2019 | 11/01/2019
1 | 8 | 11/01/2019 | Null
2 | 5 | 01/01/2000 | 01/01/2019
2 | 7 | 01/01/2019 | 11/01/2019
2 | 8 | 11/01/2019 | Null
Все строки / записи, отражающие их текущий статус, имеют в своем столбце DateEnded значение Null.
Как бы я вытащил все их статусы до их текущего и вставил бы их во временную таблицу?
Я думал об использовании top 1
, но при этом я получу только 1 запись:
select top 1 clientid, statusid, datestarted, dateended
from ClientStatusHistory
where
dateended is not null
order by id desc
Это упорядочит их, используя desc
от самого последнего к старому, а затем вытянет один перед тем, который в данный момент активен, поскольку мы игнорируем нули.
Как бы я развернул вышеупомянутый запрос, чтобы получить все строки из ClientStatusHistory, где статус равен предыдущему для строки с полем null
DateEnded
, для каждого ClientID
?