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

SQL:Chế độ xem động với tên cột dựa trên giá trị cột trong bảng nguồn

Bạn có thể thực hiện việc này với PIVOT . Khi thực hiện PIVOT, bạn có thể thực hiện theo một trong hai cách, với Static Pivot mà bạn sẽ viết mã các hàng để chuyển đổi hoặc Dynamic Pivot sẽ tạo danh sách các cột tại thời điểm chạy:

Static Pivot (Xem SQL Fiddle cho Demo ):

select id, [user], [engineer], [manu], [OS]
from 
(
    select t.id
        , t.[user]
        , p.ticketid
        , p.label
        , p.value
    from tickets t
    inner join properties p
        on t.id = p.ticketid
) x
pivot
(
    min(value)
    for label in ([engineer], [manu], [OS])
) p

Hoặc bạn có thể sử dụng Dynamic Pivot (Xem SQL Fiddle cho Demo ):

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

select @cols = STUFF((SELECT distinct ',' + QUOTENAME(p.label) 
                    from tickets t
                    inner join properties p
                        on t.id = p.ticketid
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT id, [user], ' + @cols + ' from 
             (
                 select t.id
                        , t.[user]
                        , p.ticketid
                        , p.label
                        , p.value
                    from tickets t
                    inner join properties p
                        on t.id = p.ticketid
            ) x
            pivot 
            (
                min(value)
                for label in (' + @cols + ')
            ) p '

execute(@query)

Cả hai truy vấn sẽ trả về 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. Tạo lịch biểu tác nhân SQL Server với T-SQL

  2. Các cải tiến tempdb trong SQL Server 2019

  3. Cách tạo lối tắt cho SSMS và tự động kết nối với máy chủ SQL mặc định - SQ:Máy chủ / TSQL Hướng dẫn Phần 4

  4. Cách tự động hóa việc thu thập dữ liệu về sự phát triển của cơ sở dữ liệu SQL Server

  5. Nhận danh sách tài khoản thư cơ sở dữ liệu trong SQL Server (T-SQL)