Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Korzystanie z PIVOT w SQL Server 2008

Właściwie to lepiej zrobisz to w kliencie. Załóżmy, że korzystasz z usług Reporting Services, pobierz dane z pierwszego zestawu wyników i wyświetl je za pomocą macierzy, z identyfikatorem autora i identyfikatorem recenzji w grupie wierszy, identyfikatorem pytania w grupie kolumn i MAX(id_odpowiedzi) w środku.

Zapytanie jest wykonalne, ale potrzebujesz teraz dynamicznego SQL.

...coś takiego:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Odzyskaj bazę danych z trybu awaryjnego w SQL Server

  2. Jeśli nie określono opcji „Kolejność według”, jaką kolejność wybiera zapytanie dla zestawu rekordów?

  3. Pisanie rekurencyjnego CTE przy użyciu składni Entity Framework Fluent lub składni wbudowanej

  4. Złożony klucz podstawowy a kolumna dodatkowego identyfikatora?

  5. Jak uzyskać łączną sumę