Как использовать значение столбца следующей даты для расчета дельты для текущего столбца - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть временная таблица

BusinessDate    SSQ_CompScore
2011-01-05 00:00:00.000 41
2011-01-06 00:00:00.000 6
2011-01-07 00:00:00.000 1
2011-01-10 00:00:00.000 8
2011-01-11 00:00:00.000 48
2011-01-12 00:00:00.000 50
2011-01-13 00:00:00.000 59

Мне нужно рассчитать дельту для каждой текущей даты. Я подготовил решение, но оно не работает там, где дата не является последовательной. Можете ли вы помочь?

select t1.businessdate, t1.ssq_compscore, (t2.ssq_compscore - t1.ssq_compscore) as delta
from #temp t1
left join #temp t2 on  t1.businessdate = DATEADD(dd,1,t2.businessdate)
where t1.businessdate >='20180814' 

Результирующий набор должен быть как

BusinessDate            SSQ_CompScore Delta
2011-01-05 00:00:00.000   41           NULL
2011-01-06 00:00:00.000   6            35 
2011-01-07 00:00:00.000   1            5
2011-01-10 00:00:00.000   8            7
2011-01-11 00:00:00.000   48          40 
2011-01-12 00:00:00.000   50           2
2011-01-13 00:00:00.000   59           9

1 Ответ

0 голосов
/ 03 сентября 2018

Не уверен, что это самый эффективный способ, но, насколько я вижу, он работает

SELECT businessdate, SSQ_CompScore , 
       SSQ_CompScore - (SELECT SSQ_CompScore 
                        FROM temp 
                        WHERE businessdate < t1.businessdate
                        ORDER BY businessdate DESC
                        LIMIT 1) as delta
FROM temp t1
ORDER BY businessdate ASC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...