Trên thực tế, tốt hơn hết bạn nên làm điều này trong ứng dụng khách. Giả sử bạn đang sử dụng Dịch vụ báo cáo, hãy lấy dữ liệu theo tập kết quả đầu tiên của bạn và hiển thị nó bằng Ma trận, với author_id và review_id trong Nhóm hàng, question_id trong Nhóm cột và MAX (answer_id) ở giữa.
Truy vấn có thể thực hiện được, nhưng bạn cần SQL động ngay bây giờ.
... đại loại như:
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;