PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Cách tạo cột cho các trường khác nhau mà không cần áp dụng chức năng xoay vòng

Nếu bạn có một số lượng cột cố định, bạn có thể sử dụng một mảng:

select studentnr, name, gradenumber, 
       languages[1] as language_1,
       languages[2] as language_2,
       languages[3] as language_3,
       languages[4] as language_4,
       languages[5] as language_5
FROM (       
  SELECT s.studentnumber as studentnr, 
         p.firstname AS name,
         sl.gradenumber as gradenumber,
         array_agg(DISTINCT l.text) as languages
  FROM student s
      JOIN pupil p ON p.id = s.pupilid    
      JOIN pupillanguage pl on pl.pupilid = p.id
      JOIN language l on l.id = pl.languageid
      JOIN schoollevel sl ON sl.id = p.schoollevelid
  GROUP BY s.studentnumber, p.firstname
) t

Lưu ý rằng distinct thường không cần thiết khi bạn sử dụng group by



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tính tổng trên các phân vùng với các chức năng cửa sổ

  2. Làm cách nào để tôi có được các hàng ĐÃ CHÈN và CẬP NHẬT cho hoạt động UPSERT trong postgres

  3. Thêm bảng người dùng / tài khoản vào Postgres trong Chế độ xem Django

  4. Kiểm tra chức năng HASH để phân vùng bảng Postgres

  5. Sequelize Migration - Tạo Trigger trong PostgreSQL