sql >> Database >  >> RDS >> Sqlserver

Kolommen sorteren voor dynamisch draaien

U kunt de volgorde van de velden in een dynamische pivot-query aanpassen door een ORDER BY . toe te voegen wanneer u uw @cols . instelt tekenreeks:

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

Update:de DISTINCT gemist in eerste instantie, bij gebruik van DISTINCT je moet een subquery gebruiken en vervolgens 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,'')

Mogelijk moet u een 'sorteer'-veld aan uw subquery toevoegen als u niet alleen de kolomnaam kunt gebruiken, en u kunt alle velden aan de subquery toevoegen zolang ze de DISTINCT niet verstoren lijst. Bijvoorbeeld:

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. PHP SQL:hoe u gegevens vanuit één html-formulier naar meerdere databases kunt opslaan OF hoe u automatisch gegevens van de ene database naar een andere database kopieert

  2. Oracle PL/SQL krijgt IP v4 van de server?

  3. Is het vergelijken van strings in MySQL kwetsbaar voor timing-aanvallen?

  4. Parsing door MySQL-kolom om gegevens te extraheren