sql >> Base de Datos >  >> RDS >> PostgreSQL

Postgres:¿cómo convertir una fila con un rango int en filas intermedias a partir de valores individuales de ese rango?

Usa generate_series() :

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

Estrictamente hablando, el lateral no es necesario. Pero explica lo que está pasando. También debo señalar que también puedes hacer:

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

Sin embargo, generate_series() afecta el número de filas en la consulta. No me siento cómodo con tales efectos en el SELECT cláusula.