はい、動的ピボットを実行できます。 PIVOT
最初に静的バージョンを使用してクエリを実行すると、クエリと結果がどのように表示されるかを確認できます。次に、クエリを動的バージョンに変換します。
以下は、クエリの静的バージョンと動的バージョンの例です:
静的 (SQL Fiddle ):
select * from ( select u.userid, u.fname, u.lname, u.mobile, r.question, r.choice from users u left join results r on u.questionid = r.questionid and u.choiceid = r.choiceid ) x pivot ( min(choice) for question in([are you], [from]) ) p
プレ>動的 (SQL Fiddle ):
DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX) SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.question) FROM results c FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') ,1,1,'') set @query = 'SELECT userid, fname, lname, mobile, ' + @cols + ' from ( select u.userid, u.fname, u.lname, u.mobile, r.question, r.choice from users u left join results r on u.questionid = r.questionid and u.choiceid = r.choiceid ) x pivot ( min(choice) for question in (' + @cols + ') ) p ' execute(@query)
プレ>現在のテーブル構造といくつかのサンプルデータに関する詳細を提供できる場合。お客様の状況に必要なバージョンの作成をお手伝いできるはずです.
前述したように、最初に変換する必要がある列をハードコーディングしてから動的バージョンに移行する静的バージョンから始める方が簡単な場合があります。