sql >> Databasteknik >  >> RDS >> PostgreSQL

Postgres - Hur konverterar man rader med ett int-intervall till mellanliggande rader från individuella värden från det intervallet?

Använd generate_series() :

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

Strängt taget, den lateral behövs inte. Men det förklarar vad som händer. Jag bör också notera att du också kan göra:

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

Men generate_series() påverkar antalet rader i frågan. Jag är obekväm med att ha sådana effekter i SELECT klausul.




  1. Dela upp en mysqldump-fil med flera databaser, efter databas

  2. Procedur för att exportera tabell till flera csv-filer

  3. Oracle Concurrent Manager – CP Analyzer för E-Business Suite

  4. Få lista med start- och slutvärden från tabellen över datum och tider