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

unpivot dengan kolom dinamis ditambah nama kolom

Anda dapat mereferensikan nama kolom dari val for col in bagian dari unpivot. Col mendapatkan nama kolom

Contoh Fiddle

-- 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. SQL Server :cara memilih jumlah baris yang tetap (pilih setiap nilai ke-x)

  2. InvalidCastException berkala dan Server gagal melanjutkan transaksi dengan Linq

  3. TSQL Bulatkan angka desimal

  4. mengalami masalah saat mencoba memulihkan basis data terenkripsi

  5. numerik(38,0) sebagai kolom kunci utama; baik, buruk, siapa yang peduli?