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

SQL:स्रोत तालिका में स्तंभ मानों के आधार पर स्तंभ नामों के साथ गतिशील दृश्य

आप इसे PIVOT . PIVOT करते समय आप इसे दो तरीकों में से एक कर सकते हैं, एक स्टेटिक पिवट के साथ कि आप पंक्तियों को ट्रांसफ़ॉर्म करने के लिए कोड करेंगे या एक डायनामिक पिवट जो रन-टाइम पर कॉलम की सूची बनाएगा:

स्टेटिक पिवट (देखें SQL Fiddle for Demo ):

select id, [user], [engineer], [manu], [OS]
from 
(
    select t.id
        , t.[user]
        , p.ticketid
        , p.label
        , p.value
    from tickets t
    inner join properties p
        on t.id = p.ticketid
) x
pivot
(
    min(value)
    for label in ([engineer], [manu], [OS])
) p

या आप एक डायनामिक पिवट का उपयोग कर सकते हैं (देखें SQL Fiddle for Demo ):

DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX);

select @cols = STUFF((SELECT distinct ',' + QUOTENAME(p.label) 
                    from tickets t
                    inner join properties p
                        on t.id = p.ticketid
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT id, [user], ' + @cols + ' from 
             (
                 select t.id
                        , t.[user]
                        , p.ticketid
                        , p.label
                        , p.value
                    from tickets t
                    inner join properties p
                        on t.id = p.ticketid
            ) x
            pivot 
            (
                min(value)
                for label in (' + @cols + ')
            ) p '

execute(@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 सर्वर पहचान का परिचय

  2. डेटाबेस वातावरण को सुरक्षित करने के लिए SQL सर्वर लॉकडाउन को समझना

  3. टी-एसक्यूएल सीटीई भौतिकीकरण तकनीक एसक्यूएल सर्वर 2012 पर काम नहीं कर रही है

  4. फ़ील्ड मान का निर्धारण कैसे करें जो SQL सर्वर में (दशमलव, फ्लोट, इंट) में परिवर्तित नहीं हो सकता है

  5. मैं अल्पविराम से अलग किए गए मान स्ट्रिंग के रूप में SQL तालिका से आईडी की सूची कैसे खींच सकता हूं?