実際には、クライアントでこれを行う方がよいでしょう。 Reporting Servicesを使用していると仮定し、最初の結果セットに従ってデータを取得し、マトリックスを使用して表示します。行グループにauthor_idとreview_id、列グループにquestion_id、中央にMAX(answer_id)があります。
クエリは実行可能ですが、今すぐ動的SQLが必要です。
...次のようなもの:
DECLARE @QuestionList nvarchar(max);
SELECT @QuestionList = STUFF(
(SELECT ', ' + quotename(question_id)
FROM YourTable
GROUP BY question_id
ORDER BY question_id
FOR XML PATH(''))
, 1, 2, '');
DECLARE @qry nvarchar(max);
SET @qry = '
SELECT author_id, review_id, ' + @QuestionList +
FROM (SELECT author_id, review_id, question_id, answer_id
FROM YourTable
)
PIVOT
(MAX(AnswerID) FOR question_id IN (' + @QuestionList + ')) pvt
ORDER BY author_id, review_id;';
exec sp_executesql @qry;