Brug generate_series()
:
select gs.i, t.*
from t cross join lateral
generate_series(start_i, end_i, 1) gs(i);
Strengt taget den lateral
er ikke nødvendig. Men det forklarer, hvad der foregår. Jeg skal også bemærke, at du også kan:
select generate_series(start_i, end_i) as i, t.*
from t;
Dog generate_series()
påvirker antallet af rækker i forespørgslen. Jeg er utilpas ved at have sådanne effekter i SELECT
klausul.