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

Menyimpan hasil Pivot dinamis ke dalam tabel sementara di SQL Server

Jika Anda menggunakan apply lalu mengapa Anda membutuhkan logika yang sama lebih lanjut di PIVOT (yaitu Channel + CONVERT(Varchar(4), Year) ) yang sudah tersedia di apply .

Jadi, saya akan menggunakan Value sebagai gantinya di PIVOT :

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

Jadi, Dynamic SQL Anda yang diperbarui akan menjadi :

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

Saya tidak membuat perubahan karena ada banyak koreksi yang harus dilakukan sebelum eksekusi.




  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. Tabel riwayat SQL Server - isi melalui SP atau Pemicu?

  3. Bagaimana cara menghasilkan nomor acak untuk setiap baris dalam pemilihan T-SQL?

  4. Apa yang dimaksud dengan opsi Salin Saja Cadangan ini?

  5. Menduplikasi baris berdasarkan nilai kolom di setiap baris