• 締切済み

抽出対象の1レコードを複数レコードへ変更し出力する方法を

抽出対象の1レコードを複数レコードへ変更し出力する方法を SQLで教えてください。(SQLServer2000です。) <イメージ> 店番 顧客番号 年月  A B C D ・・・(Dのあと100項目つづく)・・・ 1000 12345678 200909 10 20 30 40 2000 12345678 200910 30 40 50 60 を 店番 顧客番号 年月  AからD 1000 12345678 200909 10 1000 12345678 200909 20 1000 12345678 200909 30 1000 12345678 200909 40 2000 12345678 200910 30 2000 12345678 200910 40 2000 12345678 200910 50 2000 12345678 200910 60 と出力したいのですが、SQLServer2000ではPIVOT等が使用できず。 抽出処理が思いつきません。 パフォーマンスも悪くなったりしますか。 何か良い方法をご教示ください、よろしくお願い致します。

みんなの回答

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

パフォーマンスは望むべくもありませんが、一例を示します。 テーブル名を「TBL」とします。 SELECT 店番,顧客番号,年月, CASE n.colorder WHEN 4 THEN A WHEN 5 THEN B WHEN 6 THEN C WHEN 7 THEN D WHEN 8 ....(以下繰り返し) END FROM TBL CROSS JOIN (SELECT colorder FROM syscolumns c,sysobjects o WHERE c.id=o.id AND o.name='TBL' AND c.colorder>3) n 要は該当するテーブルのメタデータを使って、カラム数分レコードを増幅させるということです。 (colorder>3は、先頭に店番,顧客番号,年月の3カラムがある前提だからです)

関連するQ&A