Teradata поддерживает lag() ignore nulls
. Итак, ваше правило в основном состоит в том, что текущая строка или самая последняя строка со значением 'DROP'
. Для этого . , ,
select t.*,
(case when sale_change = 'DROP' or prev_sale_change = 'DROP'
then 'DIP'
end)
from (select t.*,
lag(sale_change ignore nulls) over (order by id_date) as prev_sale_change
from t
) t;
Вам не нужен подзапрос - задержка может быть во внешнем case
выражении.