Użyj generate_series()
:
select gs.i, t.*
from t cross join lateral
generate_series(start_i, end_i, 1) gs(i);
Ściśle mówiąc, lateral
nie jest potrzebne. Ale wyjaśnia, co się dzieje. Powinienem również zauważyć, że możesz również zrobić:
select generate_series(start_i, end_i) as i, t.*
from t;
Jednak generate_series()
wpływa na liczbę wierszy w zapytaniu. Czuję się niekomfortowo mając takie efekty w SELECT
klauzula.