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,'')コード> プレ>