QA@IT

【SqlServer】複数行のデータを複数列で取得したい

9229 PV

はじめまして。
SqlServer2008です。

下記データがあるとします。

no col1 col2
--+----+-----
1 AAA a1
2 AAA a2
3 AAA a3
4 BBB b1
5 BBB b2

この内容をSQL一発で下記のように取得したいです。

AAA BBB
---+-----
a1 b1
a1 b2
a2 b1
a2 b2
a3 b1
a3 b2

横展開とクロス結合を含んでるイメージです。
col1の行数(種類数)は可変です。
なので横展開の列数も可変になります。
col2の行数(種類数)も同じく可変です。

色々質問を確認しましたが、固定バージョンが多くてしっくりくるものがありませんでした。。

回答

1.列数が固定でないSelectは出来ません。

2.列名を実行時に決めることは出来ません。

なので

一度Selectして列情報を確定してから
問い合わせをする必要があります。

サーバー側でExecuteするSQL文を動的に作成し実行するという
方法を行えばクライアント側は1度の問い合わせで取得する
事が出来ます。

例)
Declare sql nvarchar(500)
EXECUTE sp_ExecuteSQL sql

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。