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

Brug af PIVOT i SQL Server 2008

Faktisk ville du være bedre stillet at gøre dette i klienten. Antag, at du bruger Reporting Services, få dataene i henhold til dit første resultatsæt og vis dem ved hjælp af en matrix med author_id og review_id i rækkegruppen, question_id i kolonnegruppen og MAX(answer_id) i midten.

En forespørgsel er mulig, men du har brug for dynamisk SQL lige nu.

...noget i stil med:

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;


  1. SQLite JSON_REMOVE()

  2. FEJL:kunne ikke indlæse biblioteket "/opt/PostgreSQL/9.0/lib/postgresql/plperl.so":libperl.so:

  3. Hvordan indsætter/opdaterer man større datastørrelser i Oracle-tabellerne?

  4. Hvad er Javas JPA-teknologi?