PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Postgres - Bagaimana cara mengubah baris dengan rentang int menjadi baris perantara dari nilai individual dari rentang itu?

Gunakan generate_series() :

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

Sebenarnya, lateral tidak diperlukan. Tapi itu menjelaskan apa yang sedang terjadi. Saya juga harus mencatat bahwa Anda juga dapat melakukan:

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

Namun, generate_series() mempengaruhi jumlah baris dalam kueri. Saya tidak nyaman memiliki efek seperti itu di SELECT klausa.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nama kolom SQL dan membandingkannya dengan catatan baris di tabel lain di PostgreSQL

  2. (Python) instalasi psycopg2

  3. Tidak dapat menyimpan Euro-sign ke properti LOB String dengan Hibernate/PostgreSQL

  4. Masalah Kueri Asli Hibernasi dengan parameter bernama

  5. Debug SQL di pgAdmin ketika SQL berisi variabel