Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

unpivot z dynamicznymi kolumnami i nazwami kolumn

Możesz odwołać się do nazwy kolumny z val for col in część unpivot. Col otrzymuje nazwę kolumny

Przykładowe skrzypce

-- 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Utwórz konto pocztowe bazy danych w programie SQL Server (T-SQL)

  2. Jak wstawiać wiersze do tabeli SQL Server za pomocą interfejsu graficznego Edit Table Rows — SQL Server / TSQL Tutorial, część 101

  3. Nie można zalogować się do SQL Server 2008 za pomocą narzędzia wiersza poleceń

  4. Różne sposoby monitorowania zawsze włączonych grup dostępności programu SQL Server

  5. Dlaczego powinienem uaktualnić SQL2000 do SQL2005?