Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Utilisation de PIVOT dans SQL Server 2008

En fait, vous feriez mieux de le faire dans le client. Supposons que vous utilisez Reporting Services, obtenez les données selon votre premier ensemble de résultats et affichez-les à l'aide d'une matrice, avec author_id et review_id dans le groupe de lignes, question_id dans le groupe de colonnes et MAX(answer_id) au milieu.

Une requête est faisable, mais vous auriez besoin de SQL dynamique dès maintenant.

...quelque chose comme :

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;