Ниже приведены результаты созданного мной оператора WITH:
id prodid start end lead lag rnk_prod_first rnk_prod_last
1 4654 2/26/19 4/5/19 y null 1 7
1 4655 5/20/19 8/1/19 y y 2 6
1 4656 11/6/19 11/13/19 n y 3 5
1 4657 11/14/19 10/30/20 n n 4 4
1 4658 10/31/20 11/15/20 n n 5 3
1 4659 11/16/20 11/30/20 y n 6 2
1 4660 12/10/20 12/20/20 null y 7 1
Мне нужно создать логический столбец, который идентифицирует дату окончания, когда lead
= 'y', или принять дату окончания следующего значениягде lead
= 'y'
lead / lag = Определяет, есть ли пробелы в датах начала / окончания
ожидаемые результаты:
id prodid start end lead lag rnk_prod_first rnk_prod_last lead_end_dt
1 4654 2/26/19 4/5/19 y null 1 7 4/5/19
1 4655 5/20/19 8/1/19 y y 2 6 8/1/19
1 4656 11/6/19 11/13/19 n y 3 5 11/30/20
1 4657 11/14/19 10/30/20 n n 4 4 11/30/20
1 4658 10/31/20 11/15/20 n n 5 3 11/30/20
1 4659 11/20/20 11/30/20 y y 6 2 11/30/20
1 4660 12/10/20 12/20/20 null y 7 1 12/20/20
Итак, что-токак показано ниже
select case
when lead <> 'n' then end
--when lead <> 'y' then --take next value where lead = 'y'
--can we use lead and ignore the 'n'?
--can we use first_value somehow?
end lead_end_dt