sql >> Database >  >> RDS >> Sqlserver

draai ongedaan maken met dynamische kolommen plus kolomnamen

U kunt verwijzen naar de kolomnaam van de val for col in onderdeel van de unpivot. Col krijgt de kolomnaam

Voorbeeld viool

-- 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. Excel VBA verbinden met Oracle DB met 'ODBC'

  2. hoe parameters te verzenden om te activeren in Oracle

  3. MySQL subselectie prestatievraag?

  4. Wanneer ik probeer toegang te krijgen tot een SQL Server 2008-server in mijn domein, krijg ik een server niet gevonden of was niet toegankelijk fout