SQL для заполнения данных за недостающие недели - PullRequest
0 голосов
/ 22 ноября 2018

Я хотел бы построить sql для заполнения недостающих недель данных.Не могли бы вы помочь.

Пример:

Year - Week    order
2018 W45        250
2018 W51        300

Мне бы хотелось, чтобы на дисплее было следующее:

Year - Week    order
2018 W45        250
2018 W46        250
2018 W47        250
2018 W48        250
2018 W49        250
2018 W50        250
2018 W51        300
...
2019 W52        300

Предполагается, что пределом даты является декабрь 2019 года.

Спасибо

1 Ответ

0 голосов
/ 22 ноября 2018

В PostgreSQL вы можете попробовать что-то вроде следующего.

SELECT sq."year-week"
, sq.orders
FROM
(
SELECT LEFT(a.rstrt, 6) || W "year-week"
, a.orders
, ROW_NUMBER() OVER(PARTITION BY LEFT(a.rstrt, 6) || W ORDER BY a.rend DESC) RN 
FROM(SELECT "year-week" rstrt
, COALESCE(LEAD ("year-week", 1) OVER(), 2018 || ' W' || 52) rend
, orders
FROM orders
UNION 
SELECT '2019 W01', '2019 W52', 300) a
LEFT JOIN (SELECT generate_series(1, 52, 1) w) b ON b.w BETWEEN RIGHT(a.rstrt, 2)::INT AND RIGHT(a.rend, 2)::INT
ORDER BY LEFT(a.rstrt, 4)::INT, w
) sq
WHERE RN = 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...