• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:こういうビューを抽出したいのですが...)

ビューを抽出するためのSQL文を教えてください

このQ&Aのポイント
  • ビューを抽出するためのSQL文について教えてください。
  • 具体的なテーブルの構造と抽出結果の例を示しながら、SELECT文の記述方法について説明してください。
  • CodeBとNameが最大5回まで存在する抽出結果を得るためのSELECT文についても教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

「CodeBとNameは1行に最大5回まで存在しうる」ので常に5セット(CodeB5,Name5まで)返していいということですよね。 SQL Server 2005以降であれば、以下のような書き方ができます。 SELECT ID, CodeA, MAX(CASE WHEN Seq=1 THEN CodeB END) CodeB1, MAX(CASE WHEN Seq=1 THEN Name END) Name1, MAX(CASE WHEN Seq=2 THEN CodeB END) CodeB2, MAX(CASE WHEN Seq=2 THEN Name END) Name2, MAX(CASE WHEN Seq=3 THEN CodeB END) CodeB3, MAX(CASE WHEN Seq=3 THEN Name END) Name3, MAX(CASE WHEN Seq=4 THEN CodeB END) CodeB4, MAX(CASE WHEN Seq=4 THEN Name END) Name4, MAX(CASE WHEN Seq=5 THEN CodeB END) CodeB5, MAX(CASE WHEN Seq=5 THEN Name END) Name5 FROM (SELECT a.ID,a.CodeA,b.CodeB,b.Name, ROW_NUMBER() OVER (PARTITION BY a.CodeA ORDER BY b.CodeB) Seq FROM TableA a INNER JOIN TableB b ON b.CodeA=a.CodeA) tmp GROUP BY ID,CodeA

koolism
質問者

お礼

jamshid6様 ご回答ありがとうございます。 ROW_NUMBER 関数というものがあるんですね。 お蔭様で希望のデータを抽出することができました。 とても便利な機能で目から鱗モノです。 助かりました。 どうもありがとうございました。

関連するQ&A