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

Tổng hợp dữ liệu trong T-SQL

Nếu bạn đang sử dụng SQL Server 2005 (trở lên), đây là mã:

DECLARE @cols VARCHAR(1000)
DECLARE @sqlquery VARCHAR(2000)

SELECT  @cols = STUFF(( SELECT distinct  ',' + QuoteName([Month])
                        FROM YourTable FOR XML PATH('') ), 1, 1, '') 


SET @sqlquery = 'SELECT * FROM
      (SELECT Person, Month, Paid
       FROM YourTable ) base
       PIVOT (Sum(Paid) FOR [Person]
       IN (' + @cols + ')) AS finalpivot'

EXECUTE ( @sqlquery )

Điều này sẽ hoạt động cho dù bạn có bao nhiêu trạng thái khác nhau. Nó kết hợp động một truy vấn với PIVOT . Cách duy nhất bạn có thể thực hiện PIVOT với các cột động là tập hợp động truy vấn, có thể được thực hiện trong SQL Server.

Các ví dụ khác:

  • Có lẽ SQL Server PIVOT?
  • Làm cách nào để tạo một bản tóm tắt bằng cách tham gia vào một bảng duy nhất với SQL Server?


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Định cấu hình nhóm AlwaysOn Av sẵn sàng trên SQL Server

  2. Cách trả lại các khóa trùng lặp từ tài liệu JSON trong SQL Server

  3. Xuất bảng từ cơ sở dữ liệu sang tệp csv

  4. Không thể chèn giá trị rõ ràng cho cột nhận dạng trong bảng 'bảng' khi IDENTITY_INSERT được đặt thành TẮT

  5. Trả lại Tên máy trạm hiện tại được kết nối với SQL Server (T-SQL)