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

SQL सर्वर में डायनामिक पिवट परिणाम को अस्थायी तालिका में संग्रहीत करना

यदि आप apply . का उपयोग कर रहे हैं तो फिर आपको PIVOT . में और समान तर्क की आवश्यकता क्यों है? (यानी Channel + CONVERT(Varchar(4), Year) ) जो पहले से ही apply . में उपलब्ध है ।

तो, मैं Value . का उपयोग करूंगा इसके बजाय PIVOT . में :

. . . 
Pivot (sum([Payments]) For [Value] in ([HV2012],[HV2013],[HV2014],[NL2012]) ) p,

तो, आपका अपडेट किया गया Dynamic SQL होगा :

Declare @SQL varchar(max) = '    
if object_id(''tempdb..##TempTable'') is not null
begin
    drop table ##TempTable
end

create table ##TempTable([Id] int null, ' + 
            Stuff((Select Distinct ','+QuoteName(Channel + CONVERT(Varchar(4), Year)) + ' Varchar(20) null'            
            From [dbo].MyTable
            Order By 1 
            For XML Path('')),1,1,'')+ ')
INSERT INTO ##TempTable
Select *
 From (
        Select A.ID, A.Payments
              ,B.*
         From  [dbo].MyTable a 
         Cross Apply ( values ( Channel + CONVERT(Varchar(4), Year)
                     )) B ([Value])
      ) S
 Pivot (sum([Payments]) For [Value] in 
 (' + Stuff((Select Distinct ','+QuoteName(Channel + CONVERT(Varchar(4), Year))                                                               
                                               From #tm
                                               Order By 1 
                                               For XML Path('')),1,1,'')  + ') ) p'

print @sql

Exec(@SQL)

SELECT * FROM ##TempTable

मैंने कोई बदलाव नहीं किया है क्योंकि निष्पादन से पहले कई सुधार किए जाने की आवश्यकता है।




  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 सर्वर कर्सर के साथ Salesforce डेटा अपडेट कर रहा है

  2. तालिका में पहचान कॉलम के लिए एक स्पष्ट मान केवल तभी निर्दिष्ट किया जा सकता है जब कॉलम सूची का उपयोग किया जाता है और IDENTITY_INSERT SQL सर्वर पर होता है

  3. SQL सर्वर 2016 :उपलब्धता समूह संवर्द्धन

  4. SQL सर्वर में मल्टी-स्टेटमेंट टेबल-वैल्यूड फंक्शन्स और इनलाइन टेबल-वैल्यूड फंक्शन्स के बीच अंतर

  5. SSMS संस्करण 18 - कोई डेटाबेस आरेख नहीं