Usa generate_series()
:
select gs.i, t.*
from t cross join lateral
generate_series(start_i, end_i, 1) gs(i);
A rigor di termini, il lateral
non è necessario. Ma spiega cosa sta succedendo. Dovrei anche notare che puoi anche fare:
select generate_series(start_i, end_i) as i, t.*
from t;
Tuttavia, generate_series()
influisce sul numero di righe nella query. Mi sento a disagio nell'avere tali effetti in SELECT
clausola.