我有一个表,由于某种原因已经硬编码像这样值的行:移调列使用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