Обновление
Как указывает @BenThul, LAG
имеет необязательное значение по умолчанию, которое можно использовать для устранения необходимости использования COALESCE
:
SELECT ACCOUNT_NO,
[Date],
Amount,
LAG(Amount, 1, 0) OVER(PARTITION BY ACCOUNT_NO ORDER BY [Date]) AS "Yesterday Amount"
FROM test
Демонстрация на dbfiddle
Оригинальный ответ
Вы можете просто использовать LAG
, с COALESCE
, чтобы превратить NULL
значенияв 0 (если значения предыдущего дня не существует):
SELECT ACCOUNT_NO,
[Date],
Amount,
COALESCE(LAG(Amount) OVER(PARTITION BY ACCOUNT_NO ORDER BY [Date]), 0) AS "Yesterday Amount"
FROM test
Вывод:
ACCOUNT_NO Date Amount Yesterday Amount
1 23/03/2014 00:00:00 100 0
1 24/03/2014 00:00:00 200 100
1 25/03/2014 00:00:00 50 200
2 23/03/2014 00:00:00 1111 0
3 24/03/2014 00:00:00 1200 0
3 25/03/2014 00:00:00 1300 1200