Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

डायनामिक कॉलम और कॉलम नामों के साथ अनपिवट करें

आप कॉलम नाम को val for col in . से संदर्भित कर सकते हैं धुरी का हिस्सा। कर्नल को कॉलम नाम मिलता है

उदाहरण 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. वर्चर के रूप में संग्रहीत तिथियों की तुलना करना

  2. #tables . के साथ Object_id () फ़ंक्शन का उपयोग करना

  3. डीबीए - SQL सर्वर पर सभी डेटाबेस प्रक्रियाओं को कैसे मारें

  4. दो पंक्तियों की तुलना करें और उन स्तंभों की पहचान करें जिनके मान भिन्न हैं

  5. java.sql.SQLException:jdbc के लिए कोई उपयुक्त ड्राइवर नहीं मिला:sqlserver