- ベストアンサー
ビューを抽出するためのSQL文を教えてください
- ビューを抽出するためのSQL文について教えてください。
- 具体的なテーブルの構造と抽出結果の例を示しながら、SELECT文の記述方法について説明してください。
- CodeBとNameが最大5回まで存在する抽出結果を得るためのSELECT文についても教えてください。
- みんなの回答 (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
お礼
jamshid6様 ご回答ありがとうございます。 ROW_NUMBER 関数というものがあるんですね。 お蔭様で希望のデータを抽出することができました。 とても便利な機能で目から鱗モノです。 助かりました。 どうもありがとうございました。