Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Използване на PIVOT в SQL Server 2008

Всъщност би било по-добре да направите това в клиента. Да предположим, че използвате Reporting Services, вземете данните според първия си набор от резултати и ги покажете с помощта на матрица, с author_id и review_id в групата на редовете, question_id в групата колони и MAX(answer_id) в средата.

Заявката е изпълнима, но ще ви трябва динамичен SQL в момента.

...нещо като:

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. Оптимизация на SQL заявки:Най-добри практики за подобрена производителност

  2. Примери за преобразуване на „дата“ в „datetime2“ в SQL Server (T-SQL)

  3. SQL Server 2016:Създайте база данни

  4. Намиране на едновременни събития в база данни между времена

  5. CRUD операции на SQL Server