SQLテーブルをピボットしようとしているときに、この投稿に出くわしました 。このメソッドを使用して、クエリを作成しました。しかし、私は今、それがもちろんMAX関数で結果を集約することに気づきました。ただし、Columをピボットする必要がありますが、すべてのオカレンスを表示する必要があります。上記の投稿から取得したコード。
SELECT dy,
MAX(CASE WHEN period = 1 THEN subj ELSE NULL END) AS P1,
MAX(CASE WHEN period = 2 THEN subj ELSE NULL END) AS P2,
FROM Classes
GROUP BY dy
だから本質的に私はこれを使いたいのですが、max関数はありませんか?何か案は?
サンプルデータの編集
Day Period Subject
Mon 1 Ch
Mon 2 Ph
Tue 1 Ph
Tue 2 Ele
Mon 1 Ch
Mon 2 Ph
Tue 1 Ph
Tue 2 Ele
出力例
Day P1 P2
Mon Ch Ph
Mon Ch Ph
Tue Ph Ele
Tue Ph Ele
つまり、基本的に、データを2回入力すると、2回表示されます...
実際のSQLを編集します。
SELECT other
MAX(CASE WHEN period = 1 THEN table2.subj ELSE NULL END) AS P1,
MAX(CASE WHEN period = 2 THEN table2.subj ELSE NULL END) AS P2
FROM table1
left join table2 on table2.ID = subject
GROUP BY other
サンプルデータ
表1
Dy Period Subject other
Mon 1 1 1
Mon 2 2 1
Tue 1 3 2
Tue 2 4 2
Mon 1 5 3
Mon 2 6 3
Tue 1 7 4
Tue 2 8 4
表2
ID Subj
1 ch
2 ph
3 ph
4 ele
5 ch
6 ph
7 ph
8 Ele
出力例
Day P1 P2 other
Mon Ch Ph 1
Mon Ch Ph 3
Tue Ph Ele 2
Tue Ph Ele 4