Я хочу заполнить пропущенные даты в моей БД, но у меня есть разные группы. Новые ячейки должны быть заполнены значением самой последней даты для каждого номера материала. Вот как сейчас выглядит мой database
:
Date [YYYY-MM-DD] Materialnumber Amount
2019-01-01 X 5
2019-01-15 X 7
2019-01-20 X 2
2019-02-02 X 8
2019-01-03 Y 756
2019-01-18 Y 750
2019-02-22 Y 720
2019-03-05 Y 820
Я хочу, чтобы он выглядел следующим образом:
Date [YYYY-MM-DD] Materialnumber Amount
2019-01-01 X 5
2019-01-02 X 5
2019-01-03 X 5
2019-01-04 X 5
...
2019-01-15 X 7
2019-01-16 X 7
2019-01-17 X 7
...
2019-01-01 Y 756
2019-01-02 Y 756
2019-01-03 Y 756
...
2019-01-18 Y 750
2019-01-19 Y 750
...
Я создал calendar
таблицу, выполнив:
WITH CTE_DatesTable
AS
(
SELECT CAST('20190101' as date) AS [Date]
UNION ALL
SELECT DATEADD(dd, 1, [date])
FROM CTE_DatesTable
WHERE DATEADD(dd, 1, [date]) <= '20191231'
)
SELECT [date]
KSH_calendar
FROM CTE_DatesTable
OPTION (MAXRECURSION 0);
Я пробовал это:
select c.[Date]
,b.Materialnumber
,b.Amount
from KSH_calendar as c
left join database as b on c.[Date] = b.[MKPF_CPUDT]
Но это не приводит меня к ожидаемому результату. Даже не говоря о получении последней ценности. У кого-нибудь есть какие-нибудь идеи / ссылки для того, чтобы я мог приблизиться к результату?
Использование Microsoft SQL Server 2017 (идентификатор версии 14)
С уважением,