前提・実現したいこと
重複した値を持つ複数のレコードを一つにまとめて見やすく成型するSQLを考えています。
GROUP BYしたレコードにて判定分を書いているのですが、
複数項目があてはまる場合は優先順位が高いほうを項目として取り出したいと考えています。
例)
★「生徒名簿」上のレコード
生徒ID|学年|年度|クラブID|優先順位|…
0001| 1|2019| 1| 1|…
0001| 1|2019| 2| 2|…
0001| 2|2020| 2| 1|…
★「クラブ名簿」上のレコード
クラブID|クラブ名|…
1| 水泳|…
2| 手芸|…
★「クラブ履歴」
生徒ID|2019_所属クラブ|2020_所属クラブ|…
0001| 水泳| 手芸|…
上記の例では、生徒名簿とクラブ名簿というテーブルを、クラブ履歴というテーブルにまとめてみれるようにしたいのです。
試したこと
自力で途中まで書いたSQL↓
select
生徒名簿.生徒ID as 生徒ID
MAX(CASE 生徒名簿.年度 WHEN '2019' THEN クラブ名簿.クラブ名 ELSE NULL END) AS 2019_所属クラブ,
MAX(CASE 生徒名簿.年度 WHEN '2020' THEN クラブ名簿.クラブ名 ELSE NULL END) AS 2020_所属クラブ
FROM 生徒名簿
INNER JOIN クラブ名簿
ON 生徒名簿.クラブID = クラブ名簿.クラブID
GROUP BY 生徒名簿.生徒ID
ここまでは検索して、自力で書くことができましたが、優先順位による判定を、どこに入れ込めばよいかがわからず、困っています。
初歩的な質問で非常に恐縮なのですが、周りに頼れる人がいないため、こちらにて相談させていただきました。
お知恵を貸していただけますと幸いです。
回答1件
あなたの回答
tips
プレビュー