Dynamiczny przestawny SQL - jak zamawiać kolumny
Pracuję nad dynamicznym zapytaniem przestawnym w tabeli zawierającej:
OID - OrderIDRozmiar - rozmiar produktuBucketNum - kolejność, w jakiej powinny się mieścić rozmiaryilość - ile zamówionoKolumna rozmiaru zawiera różne rozmiary w zależności od OID.
Używając znalezionego kodututaj, Złożyłem to razem:
DECLARE @listCol VARCHAR(2000)
DECLARE @query VARCHAR(4000)
SELECT @listCol = STUFF(( SELECT distinct '], [' + [size]
FROM #t
FOR
XML PATH('')
), 1, 2, '') + ']'
SET @query = 'SELECT * FROM
(SELECT OID, [size], [quantity]
FROM #t
) src
PIVOT (SUM(quantity) FOR Size
IN (' + @listCol + ')) AS pvt'
EXECUTE ( @query )
Działa to świetnie, z wyjątkiem tego, że nagłówki kolumn (etykiety rozmiarów) nie są w kolejności opartej na kolumnie bucketnum. Są w kolejności opartej na rozmiarach.
Próbowałem opcjonalnego Order By po czopie, ale to nie działa.
Jak kontrolować kolejność wyświetlania kolumn?
Dziękuję Ci