Atualmente tenho
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)
Definição da tabela
create table plans
(
id serial not null
constraint plans_pk
primary key,
name varchar default 50,
duration interval default '01:00:00'::interval
);
o que me dá um produto cartesiano da tabela de planos e da série gerada por timestamp.
Eu gostaria de introduzir uma duração específica para cada linha de planos, para que uma linha pudesse ter "1 hora", enquanto a outra teria "30 minutos" e geraria cada combinação para cada linha. Um CROSS JOIN aqui não funciona, eu tentei:
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)
SQL Fiddle: http://sqlfiddle.com/#!17/97a12/10