sql >> Databasteknik >  >> RDS >> Sqlserver

Sortera kolumner för dynamisk pivot

Du kan justera ordningen på fälten i en dynamisk pivotfråga genom att lägga till en ORDER BY när du ställer in din @cols sträng:

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

Uppdatering:Missade DISTINCT först när du använder DISTINCT du måste använda en underfråga och sedan 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,'')

Du kan behöva lägga till ett "sorteringsfält" i din underfråga om du inte bara kan använda kolumnnamnet, och du kan lägga till alla fält i underfrågan så länge de inte stör DISTINCT lista. Till exempel:

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. Det går inte att använda None (NULL)-värden i python mysql.connector i förberedd INSERT-sats

  2. Beräkna skillnaden mellan två datumtider i MySQL

  3. Databasdesign:Registrering och verifiering

  4. Skickar PHP-variabler till MySQL