У меня есть таблица, которая содержит сумму за месяц и сумму за предыдущий месяц.
Каждый месяц мне нужно нести сумму за предыдущий месяц, если она не существует.
Чтобы объяснить немного лучше (и с примерами), у меня могут быть следующие данные:
Month,Amount,Previous
2019-01-01,100,0
2019-02-01,100,100
2019-03-01,100,null
2019-04-01,100,null
2019-05-01,100,200
2019-06-01,100,null
Итак, я хочу перенести 100 на март и апрель, а затем 200 на июнь, чтобы это выглядело так:
Month,Amount,Previous
2019-01-01,100,0
2019-02-01,100,100
2019-03-01,100,100
2019-04-01,100,100
2019-05-01,100,200
2019-06-01,100,200
Я просто пробиваюсь, я знаю, что есть способ, но разум просто не собирает его.
Я думаю, что в эту же таблицу будет вовлечено LEFT JOIN и получено значение MIN в месяце с суммой, в которой дата больше значения предыдущего месяца, но не больше следующего.
Или он будет выполнять подзапрос в предложении WHERE и LEFT JOIN.
До сих пор я управлял приведенным ниже описанием, но оно дублирует строки мая и июня для каждого предыдущего значения (100 и 200).
SELECT
*
FROM
table1 t1
LEFT JOIN
table1 t2 ON
t1.month > t2.month
Month,Amount,Previous
2019-01-01,100,0
2019-02-01,100,100
2019-03-01,100,100
2019-04-01,100,100
2019-05-01,100,200
2019-05-01,100,100
2019-06-01,100,200
2019-06-01,100,100