テーブルの結果を転置するには、SQL Server の PIVOT コマンドが適切です。http://msdn.microsoft.com/en-us/library/ms177410(v=sql.100).aspx を参照してください
以下のスクリプトは、事前定義された一連の質問で機能します。可変数の列の場合、このリンクはhttp://blog-mstechnology.blogspot.com/2010/06/t-sql-pivot-operator-with-dynamic.htmlに役立ちます。
DECLARE @Person TABLE(
ID INT,
Name VARCHAR(50),
Age INT,
Sex CHAR(1)
)
DECLARE @Questions TABLE(
ID INT,
QuestionID INT,
Question VARCHAR(200),
Answer VARCHAR(200)
)
INSERT INTO @Person VALUES
(1,'Andrew',56,'M'),
(2,'Marge',65,'F')
INSERT INTO @Questions VALUES
(1,1,'Question1','Andrews Answer 1'),
(1,2,'Question2','Andrews Answer 2'),
(2,1,'Question1','Marge Answer 1'),
(2,3,'Question3','Marge Answer 3')
SELECT ID,Age,Name,Sex,
[1] AS 'Question1Answer',
[2] AS 'Question2Answer',
[3] AS 'Question3Answer'
FROM(
SELECT P.ID,P.Age,P.Name,P.Sex,Q.QuestionID,Q.Answer
FROM @Person P
INNER JOIN @Questions Q ON Q.ID = P.ID
) Source
PIVOT
(
MAX(Answer)
FOR QuestionID IN ([1],[2],[3])
)AS PT