Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Lưu trữ kết quả Pivot động vào một bảng tạm thời trong SQL Server

Nếu bạn đang sử dụng apply thì tại sao bạn cần thêm logic tương tự trong PIVOT (tức là Channel + CONVERT(Varchar(4), Year) ) đã có sẵn trong apply .

Vì vậy, tôi sẽ sử dụng Value thay vào đó trong PIVOT :

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

Vì vậy, Dynamic SQL đã cập nhật của bạn sẽ là:

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

Tôi không thực hiện thay đổi nào vì có nhiều chỉnh sửa cần được thực hiện trước khi thực hiện.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ký tự đường ống / thanh veritcal trong TSQL có nghĩa là gì?

  2. Làm cách nào để đặt một hàng mặc định cho một truy vấn không trả về hàng nào?

  3. Truy cập Bị từ chối khi chèn tệp vào Sql Server 2012 FileTable bằng File.CreateFile trong trang web ASP.NET

  4. SQL Server - tìm lần xuất hiện thứ n trong một chuỗi

  5. Làm tròn mili giây trong T-SQL