/ SQLストアドプロシージャ内の変数内のテキストの順序の変更 - SQL Server、ソート、変数、ストアドプロシージャ、ダイナミック

SQLストアドプロシージャ内の変数内のテキストの順序を変更する - SQL Server、ソート、変数、ストアドプロシージャ、ダイナミック

私は動的変数を持つSQLストアドプロシージャを持っています。変数は、ピボットテーブルの生成に使用されるフィールド名のコンマ区切りリストを作成するために使用されます。

実行時、変数の値は次のようになります。

[Qty Actual - Week 1], [Qty Actual - Week 2], [Qty Actual - Week 3],
[Qty Budget - Week 1], [Qty Budget - Week 2], [Qty Budget - Week 3],
[Qty Shipped - Week 1], [Qty Shipped - Week 2], [Qty Shipped - Week 3]

ピボットの最終結果はExcelにエクスポートされ、フィールドは上記の順序で出力されます。しかし、私は彼らがこのように出てくるようにします:

[Qty Actual - Week 1], [Qty Budget - Week 1], [Qty Shipped - Week 1]
[Qty Actual - Week 2], [Qty Budget - Week 2], [Qty Shipped - Week 2]
[Qty Actual - Week 3], [Qty Budget - Week 3], [Qty Shipped - Week 3]

現時点でのセットアップ方法と同じ方法で、ストアドプロシージャ全体を変更する必要があります。動的変数内の列の順序を変更するために使用できるコマンドがいくつかありますか?

回答:

回答№1は0
INSERT INTO @TAB_VAR
SELECT @VAR

INSERT INTO @TAB_VAR1
SELECT SPLIT.A.VALUE(".", "VARCHAR(100)")
FROM   (SELECT CAST ("<M>" + REPLACE(COL, ",", "</M><M>") + "</M>" AS XML) AS DATA
FROM   @TAB_VAR) AS A
CROSS APPLY DATA.NODES ("/M") AS SPLIT(A)
ORDER  BY SUBSTRING(SPLIT.A.VALUE(".", "VARCHAR(100)"), LEN(SPLIT.A.VALUE(".", "VARCHAR(100)")) -  1, 1)

SELECT @VAR = ""

SELECT @VAR = COALESCE(@VAR+",", "") + COL
FROM   @TAB_VAR1

SELECT @VAR