Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于填充缺失周数据的SQL_Sql_Database - Fatal编程技术网

用于填充缺失周数据的SQL

用于填充缺失周数据的SQL,sql,database,Sql,Database,我想构建一个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

我想构建一个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年12月


在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;

用你正在使用的数据库标记你的问题。你到底想做什么?。。。。你能说得更具体一点吗?为了节省数据库中的空间,我们只在更改的几周内存储数据。我想知道是否可以使用sql在两周之间复制数据,以便按周显示数据。您使用的是哪种数据库服务器?哪个版本?