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

Cách tạo PivotTable trong Giao dịch / SQL?

Bạn cần sử dụng PIVOT . Bạn có thể sử dụng STATIC PIVOT nơi bạn biết giá trị của các cột để biến đổi hoặc DYNAMIC PIVOT trong đó các cột không xác định cho đến thời gian thực thi.

Pivot tĩnh (Xem SQL Fiddle với Demo ):

select *
from 
(
    select memid, Condition_id, Condition_Result
    from t
) x
pivot
(
    sum(condition_result)
    for condition_id in ([C1], [C2], [C3], [C4])
) p

Xoay vòng động (Xem SQL Fiddle with Demo ):

DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX)

SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.condition_id) 
            FROM t c
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')


set @query = 'SELECT memid, ' + @cols + ' from 
            (
                select MemId, Condition_id, condition_result
                from t
           ) x
            pivot 
            (
                sum(condition_result)
                for condition_id in (' + @cols + ')
            ) p '


execute(@query)

Cả hai sẽ tạo ra cùng một kết quả.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. LINQ-to-SQL có thể bỏ qua các cột không xác định khi chèn để sử dụng giá trị mặc định của cơ sở dữ liệu không?

  2. Chỉ mục không sử dụng máy chủ SQL

  3. Hiển thị các đối tượng cơ sở dữ liệu SQL Server dưới dạng tệp trong hệ thống tệp

  4. Cách kiểm soát những gì người dùng có thể giải mã Mã hóa khóa đối xứng SQL Server

  5. Chèn vào bảng từ biến bảng?