请问 如何用DML DQL实现按天的维度拆分

我用的是PostgreSQL 我想用DML+DQL+创建中间表的方式 按每天进行拆分 现有A表 我想得到B表
A:
开始日期 截止日期 目标
20220101 20220205 80

B:
日期 目标
20220101 80
20220102 80
20220103 80
.
.
20220203 80
20220204 80
20220205 80

恳请帮忙 由于公司数据库缘故 只能DML,DQL,创建表 没办法写PLSQL

该回答引用ChatGPT
请参考下面的解决方案,如果有帮助,还请点击 “采纳” 感谢支持!

1.创建一个中间表,用于存储日期。

CREATE TABLE dates(date date);

2.将每天的日期填充到中间表中。

WITH dates AS (
  SELECT generate_series(start_date, end_date, '1 day')::date AS date
  FROM A
)
INSERT INTO dates (date)
SELECT date
FROM dates;

3 .将中间表和A表关联起来,得到结果表B

CREATE TABLE B AS
SELECT date, target
FROM dates
JOIN A
ON date BETWEEN start_date AND end_date;

注意:需要在A表中有 start_date, end_date, target 列,并且使用PostgreSQL 9.3版本或更高版本,否则 generate_series() 函数将不能正常工作。

1、PGSQL中有函数可直接生成日期序列的:

SELECT d::date, 80 mb  FROM generate_series( '20220101'::timestamptz, '20220205'::timestamptz, '1 day'::INTERVAL ) d;

输出结果:

img