sql >> Databáze >  >> RDS >> Sqlserver

unpivot s dynamickými sloupci plus názvy sloupců

Na název sloupce můžete odkazovat z val for col in část unpivot. Col získá název sloupce

Ukázkové housle

-- Build list of cols we want to unpivot (skip PID & UID)
declare @cols nvarchar(max) 
select @cols = coalesce(@cols+N',', N'') + quotename(c.name) from syscolumns c
inner join sysobjects o on c.id = o.id and o.xtype = 'u'
where o.name = 'MyTable' and c.name not in ('PID', 'UID') order by c.colid

declare @query nvarchar(max)  

select @query = N'
select PID, [UID], Col as ID, Val
from 
    (
    select PID, UID, ' + @cols + '
    from MyTable
    where UID <> 0
    ) as cp
    unpivot
    (
    Val for Col in (' + @cols + ')
    ) as up
'
exec sp_executesql @query 



  1. Práce s událostmi v Oracle Cloud Infrastructure Část 1:Základy služeb

  2. Jak průměrovat/sčítat data za den v SQL Server 2005

  3. mysql vytvoří nový řádek namísto aktualizace existujícího

  4. Jak používat Joda-Time s java.sql.Timestamp