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

Giá trị hàng của SQL Server dưới dạng tên cột Pivot Table?

Bạn có thể thực hiện việc này với PIVOT hàm số. Nếu bạn biết các giá trị mà bạn muốn chuyển thành cột hơn là bạn có thể viết mã cứng thì hãy sử dụng một pivot tĩnh:

select *
from 
(
  select dept, emp_id, emp_name, p_date, hours_worked
  from table1
) x
pivot
(
  max(hours_worked)
  for p_date in ([2012-10-19], [2012-10-20], [2012-10-21])
) p

Xem SQL Fiddle with Demo

Nếu bạn có một số lượng giá trị không xác định, thì bạn có thể sử dụng sql động để PIVOT dữ liệu:

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

select @cols = STUFF((SELECT distinct ',' 
                        + QUOTENAME(convert(char(10), p_date, 120)) 
                    from table1
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT dept, emp_id, emp_name,' + @cols + ' from 
             (
                select dept, emp_id, emp_name, p_date, hours_worked
                from table1
            ) x
            pivot 
            (
                max(hours_worked)
                for p_date in (' + @cols + ')
            ) p '

execute(@query)

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. Ký tự lạ trong cơ sở dữ liệu SQL

  2. Truy vấn đệ quy trong SQL Server

  3. sử dụng biến trong câu lệnh FROM

  4. Cách kích hoạt ràng buộc khóa ngoại trong SQL Server (Ví dụ T-SQL)

  5. SQL Server 2008 Chạy kích hoạt sau khi Chèn, Cập nhật khóa bảng gốc