У меня есть набор данных, как показано ниже:
ID ReportingDate Status
123 05/05/2020 GREEN
123 12/05/2020 NONE
123 19/05/2020 NONE
123 26/05/2020 AMBER
123 02/06/2020 RED
123 09/06/2020 NONE
123 16/06/2020 GREEN
123 23/06/2020 NONE
123 30/06/2020 AMBER
Я хочу игнорировать статусы NONE и взять предыдущее значение, которое может быть предыдущей строкой, но иногда на 2 или 3 строки раньше. По сути, окончательный результат должен соответствовать столбцу «FINAL»
ID ReportingDate Status FINAL
123 05/05/2020 GREEN GREEN
123 12/05/2020 NONE GREEN
123 19/05/2020 NONE GREEN
123 26/05/2020 AMBER AMBER
123 02/06/2020 RED RED
123 09/06/2020 NONE RED
123 16/06/2020 GREEN GREEN
123 23/06/2020 NONE GREEN
123 30/06/2020 AMBER AMBER
Я пытался использовать функции LAG () или LEAD (), но они не работают должным образом.
UPPER
(
CASE
WHEN psh.Status = 'NONE'
THEN LAG(psh.Status,1,psh.Status) OVER
(
PARTITION BY psh.ID
ORDER BY rp.ReportingDate
)
ELSE psh.Status
END
) AS OverallStatusHistory
Не могли бы вы мне посоветовать, если есть способ как этого добиться, пожалуйста?
Большое спасибо!