Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Sortuj kolumny dla dynamicznego obrotu

Możesz dostosować kolejność pól w dynamicznym zapytaniu przestawnym, dodając ORDER BY kiedy ustawisz swój @cols ciąg:

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

Aktualizacja:brakowało DISTINCT na początku, gdy używasz DISTINCT będziesz musiał użyć podzapytania, a następnie 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,'')

Może być konieczne dodanie pola sortowania do podzapytania, jeśli nie możesz po prostu użyć nazwy kolumny, i możesz dodać dowolne pola do podzapytania, o ile nie zakłócają one DISTINCT lista. Na przykład:

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. Jak wdrożyć aplikację z bazą danych serwera sql na klientach

  2. Czy mogę mieć klucz obcy odwołujący się do kolumny w widoku w SQL Server?

  3. Znajdź zależność kolumny

  4. Zmieniasz maksymalną długość kolumny varchar?

  5. Usługi raportowania serwera SQL:jak zatrzymać uruchamianie raportu po otwarciu