Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Menggunakan PIVOT di SQL Server 2008

Sebenarnya, Anda akan lebih baik melakukan ini di klien. Misalkan Anda menggunakan Layanan Pelaporan, dapatkan data sesuai hasil pertama yang Anda set dan tampilkan menggunakan Matriks, dengan author_id dan review_id di Grup Baris, question_id di Grup Kolom, dan MAX(answer_id) di tengah.

Kueri dapat dilakukan, tetapi Anda memerlukan SQL dinamis sekarang.

...sesuatu seperti:

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. 2 Cara Mengembalikan Semua Fungsi Buatan Pengguna dalam Database SQL Server

  2. Tidak dapat menyelesaikan konflik pemeriksaan antara SQL_Latin1_General_CP1_CI_AS dan Latin1_General_CI_AS dalam operasi yang sama

  3. Pisahkan kata dengan huruf kapital di sql

  4. Tinjau Pengaturan Sesi Anda dengan SESSIONPROPERTY() di SQL Server

  5. Dapatkah INNER JOIN menawarkan kinerja yang lebih baik daripada EXISTS