Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Сортиране на колони за динамична ос

Можете да коригирате реда на полетата в динамична обобщена заявка, като добавите ORDER BY когато зададете вашите @cols низ:

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

Актуализация:Пропуснато е DISTINCT първо, когато използвате DISTINCT ще трябва да използвате подзаявка и след това 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,'')

Може да се наложи да добавите поле за сортиране във вашата подзаявка, ако не можете просто да използвате името на колоната, и можете да добавите всякакви полета към подзаявката, стига да не нарушават DISTINCT списък. Например:

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. Защо функциите със скаларна стойност на SQL Server стават по-бавни?

  2. изолиране на подниз в низ преди символ в SQL Server 2008

  3. Може ли някой да обясни разликата между две заявки?

  4. Как да активирате всички ограничения за проверка в базата данни на SQL Server - SQL Server / TSQL урок, част 88

  5. Облачна миграция 101:Преминаване от SQL Server към Azure