Použijte generate_series()
:
select gs.i, t.*
from t cross join lateral
generate_series(start_i, end_i, 1) gs(i);
Přesně řečeno, lateral
není potřeba. Ale vysvětluje, co se děje. Měl bych také poznamenat, že můžete také:
select generate_series(start_i, end_i) as i, t.*
from t;
Nicméně generate_series()
ovlivňuje počet řádků v dotazu. Je mi nepříjemné mít takové efekty v SELECT
klauzule.