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

Chuyển đổi các hàng trong các cột trong SQL Server 2005

Bạn sẽ cần thực hiện PIVOT . Có hai cách để thực hiện việc này với PIVOT, đó là Static Pivot nơi bạn viết mã các cột để chuyển đổi hoặc Dynamic Pivot xác định các cột khi thực thi.

Pivot tĩnh:

SELECT *
FROM
(
    SELECT col1, col2
    FROM yourTable
) x
PIVOT
(
   min(col2)
   for col1 in ([A], [B], [C])
)p

Xem SQL Fiddle with Demo

Xoay vòng động:

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

select @cols = STUFF((SELECT distinct ',' + QUOTENAME(col1) 
                    from t1
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT ' + @cols + ' from 
             (
                select col1, col2
                from t1
            ) x
            pivot 
            (
                min(col2)
                for col1 in (' + @cols + ')
            ) p '

execute(@query)

Xem SQL Fiddle with Demo

Nếu bạn không muốn sử dụng PIVOT thì bạn có thể thực hiện một loại truy vấn tương tự với CASE tuyên bố:

select 
  SUM(CASE WHEN col1 = 'A' THEN col2 END) as A,
  SUM(CASE WHEN col1 = 'B' THEN col2 END) as B,
  SUM(CASE WHEN col1 = 'C' THEN col2 END) as C
FROM t1

Xem SQL Fiddle with Demo



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để nhận giá trị trả về từ thông báo hệ thống Sql Server?

  2. Làm cách nào để CHỌN nhiều cột trong CASE WHEN trên SQL Server?

  3. Sự cố với thay đổi đối chiếu cơ sở dữ liệu (SQL Server 2008)

  4. Cách chèn hàng trong Bảng SQL Server bằng cách chỉnh sửa GUI hàng bảng - Hướng dẫn SQL Server / TSQL Phần 101

  5. xuất sang Excel từ danh sách với EPPLUS