sql >> Database >  >> RDS >> Sqlserver

PIVOT gebruiken in SQL Server 2008

Eigenlijk kun je dit beter in de client doen. Stel dat u Reporting Services gebruikt, haal de gegevens op volgens uw eerste resultatenset en geef deze weer met behulp van een matrix, met author_id en review_id in de rijgroep, vraag_id in de kolomgroep en MAX(answer_id) in het midden.

Een query is mogelijk, maar je hebt nu dynamische SQL nodig.

...zoiets als:

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. mysql draai-/kruistabelquery

  2. Hoe MySQL-verbindingen (max_connections) vergroten?

  3. PostgreSQL-functie die meerdere resultaatsets retourneert

  4. SMALLDATETIMEFROMPARTS() Voorbeelden in SQL Server (T-SQL)