У меня есть набор данных, в котором мне нужно проверить следующие 7 последовательных дат, если значение равно 0, тогда мы поместим все промежуточные значения как 0, если значения между ними не равны 0 в течение 7 дней, тогда мы отметим все значения как1.
например:
Набор данных
Days Values
12/21/2006 1
12/22/2006 1
12/23/2006 1
12/24/2006 1
12/25/2006 0
12/26/2006 1
12/27/2006 0
12/28/2006 0
12/29/2006 1
12/30/2006 1
12/31/2006 0
1/1/2007 0
1/2/2007 0
1/3/2007 0
1/4/2007 0
1/5/2007 0
1/6/2007 0
1/7/2007 1
1/8/2007 1
Ожидаемый результат
Day Values NewVal
12/21/2006 1 1
12/22/2006 1 1
12/23/2006 1 1
12/24/2006 1 1
12/25/2006 0 1
12/26/2006 1 1
12/27/2006 0 1
12/28/2006 0 1
12/29/2006 1 1
12/30/2006 1 1
12/31/2006 0 0
1/1/2007 0 0
1/2/2007 0 0
1/3/2007 0 0
1/4/2007 0 0
1/5/2007 0 0
1/6/2007 0 0
1/7/2007 1 1
1/8/2007 1 1
Я уже пробовал использовать свинец для проверки данных за 7 дней, но не смогполучить последовательную нулевую часть 7 дней. В моем коде всякий раз, когда он получает ноль за 7 дней, он принимает значение как 0, что не то, что я хочу.
Мой запрос
select *, LEAD(Values,7,0) over (order by gas_dte) as nextval
from temp