目前我有
SELECT x, plans.name
FROM plans
CROSS JOIN generate_series(timestamp '2021-01-01 06:00'
, timestamp '2021-01-07 22:00'
, interval '1 hour') t(x)
表定义
create table plans
(
id serial not null
constraint plans_pk
primary key,
name varchar default 50,
duration interval default '01:00:00'::interval
);
这给了我计划表和时间戳生成系列的笛卡尔积。
我想为每个计划行介绍一个特定的持续时间,因此一行可以有“1 小时”,意味着另一行有“30 分钟”,然后为每一行生成每个组合。这里的 CROSS JOIN 不起作用,我试过:
SELECT x, plans.name
FROM plans
CROSS JOIN generate_series(timestamp '2021-01-01 06:00'
, timestamp '2021-01-07 22:00'
, interval plans.duration) t(x)