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?