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

Xoay vòng dữ liệu hai lần với sql động và tên cột tùy chỉnh

Không cần Xoay hai lần.

Ví dụ

Declare @SQL varchar(max) = '
Select *
 From (
        Select A.Account
              ,B.*
         From  (Select Account
                      ,ProductID
                      ,Qty = sum(Qty)
                      ,RN=Row_Number() over (Partition By Account Order by ProductID)
                 From  YourTable
                 Group By Account,Productid
               ) A
         Cross Apply (values (''qty''+cast(RN as varchar(25)),cast(Qty as varchar(100)))
                            ,(''product''+cast(RN as varchar(25)),cast(productid as varchar(100)))
                     ) B (Item,Value)

      ) A
 Pivot (max([Value]) For [Item] in (' + Stuff((Select Distinct ','+QuoteName('product'+ColNr) 
                                                              +','+QuoteName('qty'+ColNr) 
                                               From (Select Distinct ColNr=cast(Row_Number() over (Partition By Account,ProductID Order by (Select NULL)) as varchar(25)) From  YourTable ) A  
                                               Order By 1 
                                               For XML Path('')),1,1,'')  + ') ) p'
Exec(@SQL);
Print @SQL

Trả lại

Nếu nó hữu ích với Hiển thị - Truy vấn con tạo ra




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lưu các thay đổi sau khi chỉnh sửa bảng trong SQL Server Management Studio

  2. Tải tệp CSV lên trang SharePoint bằng SSIS

  3. Làm cách nào để lấy kích thước của trường varchar [n] trong một câu lệnh SQL?

  4. SQL Server Dynamic Pivot trong UDF trả về bảng

  5. So sánh máy ảo trên đám mây với cơ sở dữ liệu đám mây được quản lý