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

क्रॉस अप्लाई और यूनियन सभी परिणामों का उपयोग करके एक टेबल के माध्यम से लूप करें

Cross Apply Use का इस्तेमाल करें परिणाम को अनपिवट करने के लिए। इस प्रारूप में गतिशील क्वेरी क्वेरी का निर्माण किया जाना चाहिए।

SELECT mnum,
       label,
       label_value,
       [Property Type]
FROM   #SetValuesTable
       CROSS apply(VALUES ('la1',la1),('la2',la2),('la3',la3),
                          ('sa1',sa1),('sa2',sa2),('sa3',sa3),
                          ('ha1',ha1),('ha2',ha2),('ha3',ha3),
                          ('ka1',ka1),('ka2',ka2)) cs (label, label_value) 

Dynamic query कुछ इस तरह होना चाहिए

DECLARE @label VARCHAR(max)='',
        @sql   NVARCHAR(max)

SELECT @label += '(' + '''' + label + ''',' + label + '),'
FROM   (SELECT DISTINCT Isnull(label, '') label
        FROM   #labelTempTab)a

SELECT @label = LEFT(@label, Len(@label) - 1)

SET @sql= 'SELECT mnum,
             label,
             label_value,
             [Property Type]
    FROM   #SetValuesTable
           CROSS apply(VALUES ' + @label
          + ') cs (label, label_value) '

EXEC Sp_executesql @sql 

नोट: चूंकि आप #labelTempTab . से मान सूची तैयार कर रहे हैं तालिका सुनिश्चित करें कि आपके पास #SetValuesTable . में मौजूद सभी लेबल हैं टेबल




  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 2005 में क्या होता है जब यह एक ऑटोनंबर कॉलम के लिए संख्या से बाहर हो जाता है?

  2. कॉलम नाम के साथ अनपिवट करें

  3. sp_ddopen - यह क्या कर रहा है?

  4. एसएसआरएस 2005 अधिकतम मूल्य वाले कॉलम का नाम खोजें

  5. SQL सर्वर 2017 में संबंध बनाएं