我有一個表,由於某種原因已經硬編碼像這樣值的行:移調列使用UNPIVOT
Row ID QtyC1 QtyC2 QtyC3 QtyC4 QtyN1 QtyN2 QtyN3 QtyN4
100 10 5 8 9 11 12 5 6
101 9 11 12 5 6 10 4 9
表有35列和周圍12K記錄(意爲各地500K值)和被添加到並不斷修正。
我想在一個視圖轉成這樣:
Row ID Year Period Val
100 C 1 10
100 C 2 5
100 C 3 8
100 C 4 9
100 N 1 11
100 N 2 12
100 N 3 5
100 N 4 6
到目前爲止,我已經成功地出來使用此查詢拆分成單值:
SELECT Row ID, YP, Val
FROM (SELECT Row ID
, QtyC1 AS C1
, QtyC2 AS C2
, QtyC3 AS C3
, QtyC4 AS C4
, QtyN1 AS N1
, QtyN2 AS N2
, QtyN3 AS N3
, QtyN4 AS N4
FROM MyTable
) SUB
UNPIVOT (Val FOR YP IN (C1,C2,C3,C4,N1,N2,N3,N4)) AS PVT
這讓我一個單一識別值(例如C1
),但我怎樣才能分割它,所以我有一個數字期間和一年的單個字符(1
和C
)?
我可以看到它可能只是將字符串分成兩部分,但如果可能的話我希望有一個更清潔的方法。
是你要動態地做到這一點?或者你要硬編碼每一列? – Taryn