Gunakan generate_series()
:
select gs.i, t.*
from t cross join lateral
generate_series(start_i, end_i, 1) gs(i);
Sebenarnya, lateral
tidak diperlukan. Tapi itu menjelaskan apa yang sedang terjadi. Saya juga harus mencatat bahwa Anda juga dapat melakukan:
select generate_series(start_i, end_i) as i, t.*
from t;
Namun, generate_series()
mempengaruhi jumlah baris dalam kueri. Saya tidak nyaman memiliki efek seperti itu di SELECT
klausa.