Sử dụng generate_series()
:
select gs.i, t.*
from t cross join lateral
generate_series(start_i, end_i, 1) gs(i);
Nói một cách chính xác, lateral
là không cần thiết. Nhưng nó giải thích những gì đang xảy ra. Tôi cũng nên lưu ý rằng bạn cũng có thể làm:
select generate_series(start_i, end_i) as i, t.*
from t;
Tuy nhiên, generate_series()
ảnh hưởng đến số hàng trong truy vấn. Tôi không thoải mái với việc có những hiệu ứng như vậy trong SELECT
mệnh đề.