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

Sắp xếp các cột cho xoay vòng động

Bạn có thể điều chỉnh thứ tự của các trường trong truy vấn tổng hợp động bằng cách thêm ORDER BY khi bạn đặt @cols chuỗi:

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,'')

Cập nhật:Bỏ lỡ DISTINCT lúc đầu, khi sử dụng DISTINCT bạn sẽ phải sử dụng một truy vấn con và sau đó 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,'')

Bạn có thể cần thêm trường 'sắp xếp' vào truy vấn con của mình nếu bạn không thể chỉ sử dụng tên cột và bạn có thể thêm bất kỳ trường nào vào truy vấn con miễn là chúng không làm gián đoạn DISTINCT danh sách. Ví dụ:

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. Cách thiết lập đám mây Spotlight và khắc phục sự cố máy chủ SQL một cách hiệu quả

  2. Nhập cột bảng tính Excel vào cơ sở dữ liệu SQL Server

  3. SQL Server và mất kết nối khi đang giao dịch

  4. Làm thế nào để chuyển đổi hình ảnh sang mảng byte chỉ sử dụng javascript để lưu trữ hình ảnh trên máy chủ sql?

  5. Sự khác biệt giữa CHAR và VARCHAR trong SQL Server là gì - Hướng dẫn sử dụng SQL Server / T-SQL Phần 31