sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur man skapar kolumner för olika fält utan att använda pivoteringsfunktionen

Om du har ett fast antal kolumner kan du använda en array:

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

Observera att distinct behövs vanligtvis inte när du använder group by



  1. 2 sätt att ta reda på vilket kvartal en dejt tillhör i MariaDB

  2. i postgres, kan du ställa in standardformateringen för en tidsstämpel, efter session eller globalt?

  3. Mysql välj ordinarie

  4. Hibernate:ID-generator med inkrement och Oracle Schema