Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL:Tampilan dinamis dengan nama kolom berdasarkan nilai kolom di tabel sumber

Anda dapat melakukan ini dengan PIVOT . Saat melakukan PIVOT, Anda dapat melakukannya dengan salah satu dari dua cara, dengan Pivot Statis yang akan Anda kodekan untuk mengubah baris atau Pivot Dinamis yang akan membuat daftar kolom saat run-time:

Pivot Statis (Lihat SQL Fiddle untuk 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

Atau Anda dapat menggunakan Pivot Dinamis (Lihat SQL Fiddle for 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)

Kedua kueri akan mengembalikan hasil yang sama.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menghitung baris untuk semua tabel sekaligus

  2. Ganti Beberapa Karakter dalam sebuah String di SQL Server (T-SQL)

  3. Dukungan Spotlight Cloud untuk Pengumuman Azure SQL DB (Pratinjau)

  4. Sintaks for-loop di SQL Server

  5. Kueri SQL untuk membagi data kolom menjadi baris