Я использовал функцию запаздывания, чтобы найти предыдущее значение. Однако я столкнулся с проблемой, которая требует более сложного запроса.
Вот мой сценарий. Наша таблица в настоящее время хранит данные на конец месяца для каждой записи. За исключением последних 95 дней. нам нравится вести ежедневные записи за последние 95 дней. Вот что я имею в виду под окончанием месяца и ежедневными записями
ID Date Amount
123 10/31/2019 52
123 11/31/2019 56
123 12/31/2019 59
123 01/25/2020 32
123 01/26/2020 28
123 ... ..
123 03/12/2020 103
Представьте себе, что ... представляют ежедневную запись для id: 123 до вчерашнего дня.
Моя задача отлично сработала для нашего исторические данные на конец месяца, но я столкнулся с проблемой с нашими ежедневными историческими данными
, и я хочу получить последнее значение за последний день предыдущего месяца для всех месяцев.
это то, что у меня сейчас есть для моего запроса
Select ID, Date, Amount,LAG(Amount, 1, 0) OVER(PARTITION BY ID
ORDER BY id,
Date)
AS SharePreviousBalance from dbo.shares
where date >= 20191031
Это вывод, который я хотел бы получить, но мой текущий запрос не работает так, как я хочу, чтобы он работал:
ID Date Amount SharePreviousBalance
123 10/31/2019 52 0
123 11/31/2019 56 52
123 12/31/2019 59 56
123 ... .. ..
123 01/25/2020 32 0
123 01/26/2020 28 0
123 01/27/2020 28 0
123 ... .. ..
123 01/31/2020 28 59
123 ... .. ..
123 02/15/2020 28 0
123 ... .. ..
123 02/29/2020 25 28
123 ... .. ..
123 03/05/2020 29 0
123 ... .. ..
123 03/10/2020 30 0
123 ... .. ..
123 03/12/2020 103 25
Есть идеи?
Спасибо