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

Urutkan Kolom Untuk Pivot Dinamis

Anda dapat menyesuaikan urutan bidang dalam kueri pivot dinamis dengan menambahkan ORDER BY saat Anda menyetel @cols string:

select @cols = STUFF((SELECT distinct ',' + QUOTENAME('Month'+cast(DATEPART(m, [Inv Date]) as varchar(2))) 
                    from #TempTable
                    ORDER BY ....
            FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)') ,1,1,'')

Pembaruan:Melewatkan DISTINCT pada awalnya, saat menggunakan DISTINCT anda harus menggunakan subquery dan kemudian ORDER BY :

SELECT @cols = STUFF((SELECT ',' +   QUOTENAME(ColName) 
                    FROM (SELECT DISTINCT 'Month'+cast(DATEPART(m, [Inv Date]) as varchar(2)) ColName
                          FROM #TempTable
                          )sub
                    ORDER BY ColName
                    FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)') ,1,1,'')

Anda mungkin perlu menambahkan bidang 'urutkan' ke dalam subkueri jika Anda tidak dapat hanya menggunakan nama kolom, dan Anda dapat menambahkan bidang apa pun ke subkueri selama tidak mengganggu DISTINCT daftar. Misalnya:

SELECT @cols = STUFF((SELECT ',' +   QUOTENAME(ColName) 
                    FROM (SELECT DISTINCT 'Month'+cast(DATEPART(m, [Inv Date]) as varchar(2)) ColName
                                          ,CASE WHEN field = 'something' THEN 1
                                                WHEN field = 'something else' THEN 2
                                                ELSE 3
                                           END as Sort
                                          ,Cust_ID
                          FROM #TempTable
                          )sub
                    ORDER BY Sort,Cust_ID
                    FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)') ,1,1,'')



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana menggabungkan tanggal dari satu bidang dengan waktu dari bidang lain - MS SQL Server

  2. Apakah ada cara yang baik untuk men-debug String atau data biner akan terpotong?

  3. diurutkan berdasarkan parameter

  4. Debugging tidak menunjukkan versi prosedur tersimpan saat ini

  5. Bagaimana cara menjalankan paket SSIS dari .NET?