sql >> Databasteknik >  >> RDS >> Sqlserver

Använder PIVOT i SQL Server 2008

Egentligen skulle du vara bättre att göra detta i klienten. Anta att du använder Reporting Services, hämta data enligt din första resultatuppsättning och visa den med en matris, med author_id och review_id i radgruppen, question_id i kolumngruppen och MAX(answer_id) i mitten.

En fråga är genomförbar, men du skulle behöva dynamisk SQL just nu.

...något 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. LEN-funktionen inkluderar inte efterföljande mellanslag i SQL Server

  2. Felsökning av SQL Server Always On Availability Groups

  3. Exportera en CLOB till en textfil med Oracle SQL Developer

  4. Jämförelse av datatyperna för datum och tid i SQL Server