Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Sử dụng PIVOT trong SQL Server 2008

Trên thực tế, tốt hơn hết bạn nên làm điều này trong ứng dụng khách. Giả sử bạn đang sử dụng Dịch vụ báo cáo, hãy lấy dữ liệu theo tập kết quả đầu tiên của bạn và hiển thị nó bằng Ma trận, với author_id và review_id trong Nhóm hàng, question_id trong Nhóm cột và MAX (answer_id) ở giữa.

Truy vấn có thể thực hiện được, nhưng bạn cần SQL động ngay bây giờ.

... đại loại như:

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. Mệnh đề ORDER BY không hợp lệ trong các dạng xem, hàm nội tuyến, bảng dẫn xuất, truy vấn con và biểu thức bảng thông thường

  2. Cách hiển thị truy vấn và kết quả trong tab riêng biệt trong SQL Server Management Studio (SSMS) - Hướng dẫn sử dụng SQL Server / TSQL Phần 15

  3. Cập nhật dữ liệu thông qua một hàm có giá trị bảng trong SQL Server

  4. Oracle:Có công cụ nào để theo dõi các truy vấn, như Hồ sơ cho máy chủ sql không?

  5. Làm thế nào để gửi email từ SQL Server?