PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak tworzyć kolumny dla różnych pól bez stosowania funkcji przechylania

Jeśli masz stałą liczbę kolumn, możesz użyć tablicy:

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

Zauważ, że distinct zwykle nie jest potrzebne, gdy używasz 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. Książka „Wysoka wydajność PostgreSQL 9.0” jest już dostępna

  2. Gdzie pliki bazy danych Postgres są zapisywane w Ubuntu?

  3. Błąd składni przy lub w pobliżu END z nazwą kolumny END

  4. Czy jest jakiś skrót do korzystania z dblink w Postgresie?

  5. Jak połączyć GraphQL i PostgreSQL