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

Hiểu hàm PIVOT trong T-SQL

A PIVOT được sử dụng để xoay dữ liệu từ một cột thành nhiều cột.

Đối với ví dụ của bạn, đây là STATIC Pivot nghĩa là bạn viết mã cố định các cột mà bạn muốn xoay:

create table temp
(
  id int,
  teamid int,
  userid int,
  elementid int,
  phaseid int,
  effort decimal(10, 5)
)

insert into temp values (1,1,1,3,5,6.74)
insert into temp values (2,1,1,3,6,8.25)
insert into temp values (3,1,1,4,1,2.23)
insert into temp values (4,1,1,4,5,6.8)
insert into temp values (5,1,1,4,6,1.5)

select elementid
  , [1] as phaseid1
  , [5] as phaseid5
  , [6] as phaseid6
from
(
  select elementid, phaseid, effort
  from temp
) x
pivot
(
  max(effort)
  for phaseid in([1], [5], [6])
)p

Đây là Bản trình diễn SQL có phiên bản đang hoạt động.

Điều này cũng có thể được thực hiện thông qua PIVOT động, nơi bạn tạo danh sách cột động và thực hiện PIVOT.

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

select @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.phaseid) 
            FROM temp c
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT elementid, ' + @cols + ' from 
            (
                select elementid, phaseid, effort
                from temp
           ) x
            pivot 
            (
                 max(effort)
                for phaseid in (' + @cols + ')
            ) p '


execute(@query)

Kết quả cho cả hai:

ELEMENTID   PHASEID1    PHASEID5    PHASEID6
3           Null        6.74        8.25
4           2.23        6.8         1.5


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tạo bảng trong SQL Server

  2. Cách ánh xạ một trường thực thể có tên là một từ dành riêng trong JPA

  3. Toán tử lôgic LIKE trong SQL Server là gì - Hướng dẫn sử dụng SQL Server / TSQL Phần 123

  4. ISJSON () Ví dụ trong SQL Server (T-SQL)

  5. Cách thêm cột mới vào bảng hiện có trong SQL Server (T-SQL)