PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Postgres - Wie konvertiert man Zeilen mit einem int-Bereich in Zwischenzeilen aus einzelnen Werten aus diesem Bereich?

Verwenden Sie generate_series() :

select gs.i, t.*
from t cross join lateral
     generate_series(start_i, end_i, 1) gs(i);

Genau genommen der lateral wird nicht benötigt. Aber es erklärt, worum es geht. Ich sollte auch beachten, dass Sie auch Folgendes tun können:

select generate_series(start_i, end_i) as i, t.*
from t;

Allerdings generate_series() wirkt sich auf die Anzahl der Zeilen in der Abfrage aus. Ich fühle mich unwohl mit solchen Effekten im SELECT Klausel.