sql >> Database teknologi >  >> RDS >> Sqlserver

unpivot med dynamiske kolonner plus kolonnenavne

Du kan referere til kolonnenavnet fra val for col in del af unpivoten. Col får kolonnenavnet

Eksempel på violin

-- 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. Løsning af forkert tegnkodning ved visning af MySQL-databaseresultater efter opgradering til PHP 5.3

  2. MySQL fjernforbindelse [ikke som normalt]

  3. Hvad er de bedste løsninger på kendte problemer med Hibernates skemavalidering af kolonner med flydende komma, når du bruger Oracle 10g?

  4. Postgres UUID og Hibernate → ingen kolonne fundet