Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Utilizzo di PIVOT in SQL Server 2008

In realtà, faresti meglio a farlo nel client. Si supponga di utilizzare Reporting Services, ottenere i dati in base al primo set di risultati e visualizzarli utilizzando una matrice, con author_id e review_id nel gruppo di righe, question_id nel gruppo di colonne e MAX(answer_id) nel mezzo.

Una query è fattibile, ma in questo momento avresti bisogno di SQL dinamico.

...qualcosa come:

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;