sql >> Databáze >  >> RDS >> Sqlserver

Použití PIVOT v SQL Server 2008

Vlastně by bylo lepší to udělat v klientovi. Předpokládejme, že používáte Reporting Services, získejte data podle své první sady výsledků a zobrazte je pomocí matice s author_id a review_id ve skupině řádků, question_id ve skupině sloupců a MAX(answer_id) uprostřed.

Dotaz je proveditelný, ale právě teď byste potřebovali dynamické SQL.

...něco jako:

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. je nějaká výhoda pro varchar(500) oproti varchar(8000)?

  2. Jak rozdělit řetězec pomocí oddělovacího znaku pomocí T-SQL?

  3. psql:FATAL:role postgres neexistuje

  4. PDO více dotazů