sql >> データベース >  >> RDS >> PostgreSQL

ピボット機能を適用せずにさまざまなフィールドの列を作成する方法

    列の数が固定されている場合は、配列を使用できます。

    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
    

    distinct group byを使用する場合、通常は必要ありません



    1. MySQLの複合FULLTEXTインデックス

    2. PostGISを使用したAmazonElasticBeanstalkの設定

    3. MySqlDbがOperandをスローする場合、insertignoreステートメントに1つの列が含まれている必要があります

    4. SQLServer-NATURAL JOIN / x JOIN y USING(フィールド)の欠如