1
我有這個樣本數據:TSQL PIVOT具有多個透視列和未透視列?
PERIOD FINANCE TYPE SEGMENT DEPARTMENT PERIOD VALUE ACCUMULATED VALUE
1 Actual HE Business -9394.6 -9394.6
2 Actual HE Business 141646.6 132252
3 Actual HE Business 145920.25 278172.25
1 Actual HE Business Skills 0 0
2 Actual HE Business Skills 0 0
3 Actual HE Business Skills 0 0
1 Actual SERVICES Catering Services 32359.59 32359.59
2 Actual SERVICES Catering Services 147628.38 179987.97
3 Actual SERVICES Catering Services 174413.87 354401.84
1 Budget HE Business 139812.27 139812.27
2 Budget HE Business 139812.27 279624.54
3 Budget HE Business 139812.27 419436.81
1 Budget HE Business Skills 0 0
2 Budget HE Business Skills 0 0
3 Budget HE Business Skills 0 0
1 Budget SERVICES Catering Services 137500 137500
2 Budget SERVICES Catering Services 137500 275000
3 Budget SERVICES Catering Services 137500 412500
我需要把它的格式如下:
FINANCE TYPE SEGMENT DEPARTMENT PERIOD VALUE 1 PERIOD VALUE 2 PERIOD VALUE 3 ACCUMULATED VALUE 1 ACCUMULATED VALUE 2 ACCUMULATED VALUE 3
Actual HE Business -9394.6 141646.6 145920.25 -9394.6 132252 278172.25
Actual HE Business Skills 0 0 0 0 0 0
Actual SERVICES Catering Services 32359.59 147628.38 174413.87 32359.59 179987.97 354401.84
Budget HE Business 139812.27 139812.27 139812.27 139812.27 279624.54 419436.81
Budget HE Business Skills 0 0 0 0 0 0
Budget SERVICES Catering Services 137500 137500 137500 137500 275000 412500
我嘗試下面的代碼,但那裏不應該得到幾個NULL
值並且輸出是錯誤的。我仍然試圖理解一般使用交叉應用和樞軸。
SELECT [FINANCE TYPE], SEGMENT,
DEPARTMENT, [PERIOD VALUE1],
[PERIOD VALUE2], [PERIOD VALUE3],
[PERIOD VALUE4], [PERIOD VALUE5],
[PERIOD VALUE6], [PERIOD VALUE7],
[PERIOD VALUE8], [PERIOD VALUE9],
[PERIOD VALUE10], [PERIOD VALUE11],
[PERIOD VALUE12], [ACCUMULATED VALUE1],
[ACCUMULATED VALUE2], [ACCUMULATED VALUE3],
[ACCUMULATED VALUE4], [ACCUMULATED VALUE5],
[ACCUMULATED VALUE6], [ACCUMULATED VALUE7],
[ACCUMULATED VALUE8], [ACCUMULATED VALUE9],
[ACCUMULATED VALUE10], [ACCUMULATED VALUE11],
[ACCUMULATED VALUE12]
FROM
(
SELECT PERIOD, [FINANCE TYPE],
SEGMENT, DEPARTMENT,
COL, VALUE, COL+PERIOD AS PRD
FROM CTE
CROSS APPLY
(
SELECT 'PERIOD VALUE', [PERIOD VALUE] UNION ALL
SELECT 'ACCUMULATED VALUE', [ACCUMULATED VALUE]
)C(COL, VALUE)
)D
PIVOT
(
MAX(VALUE)
FOR [PRD] IN ([PERIOD VALUE1], [PERIOD VALUE2], [PERIOD VALUE3],
[PERIOD VALUE4], [PERIOD VALUE5], [PERIOD VALUE6] ,
[PERIOD VALUE7], [PERIOD VALUE8], [PERIOD VALUE9],
[PERIOD VALUE10], [PERIOD VALUE11], [PERIOD VALUE12] ,
[ACCUMULATED VALUE1], [ACCUMULATED VALUE2],
[ACCUMULATED VALUE3], [ACCUMULATED VALUE4],
[ACCUMULATED VALUE5], [ACCUMULATED VALUE6] ,
[ACCUMULATED VALUE7], [ACCUMULATED VALUE8],
[ACCUMULATED VALUE9], [ACCUMULATED VALUE10],
[ACCUMULATED VALUE11], [ACCUMULATED VALUE12])
)PIV
任何幫助來幫助我解決這個問題將不勝感激。
感謝這個......只是爲什麼會有NULLS?週期1,2,3和累積1,2,3有值,所以它們爲什麼顯示在單獨的行上而不是全部顯示在一行上。這就是我希望作爲我的輸出 –
@Chen看到我的編輯,我錯過了你也必須從子查詢中刪除'Period' - 你應該有正確的結果現在看到這個演示 - http:// sqlfiddle。 com /#!3/83ea2/5 – Taryn
優秀的幫助!非常感謝x –