generate_series()を使用します :
select gs.i, t.*
from t cross join lateral
generate_series(start_i, end_i, 1) gs(i);
厳密に言えば、lateral 必要ありません。しかし、それは何が起こっているのかを説明しています。また、次のこともできることに注意してください。
select generate_series(start_i, end_i) as i, t.*
from t;
ただし、generate_series() クエリの行数に影響します。 SELECTでそのような効果を得るのは不快です 条項。