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. DockerコンテナへのPostgreSQLのデプロイ

    2. Mysql-PDOエラー-無効なカタログ名:1046データベースが選択されていません

    3. ルックアップテーブルはどのくらい重要ですか?

    4. 高可用性のためのMariaDBレプリケーションのデプロイ