透视取消透视附加列
Posted
技术标签:
【中文标题】透视取消透视附加列【英文标题】:Pivot Unpivot Additional Column 【发布时间】:2013-08-24 21:31:23 【问题描述】:如果我有一些表格,例如:
[Speed] [Ram] [Whatever] [Other]
S1 R1 W1 O1
S2 R2 W2 O2
S3 R3 W3 O3
而我想要拥有这样的一切。
[Chr] [Value]
Speed S3
Ram R3
Whatever W3
Other O3
所以我写了以下代码:
SELECT value
FROM
(SELECT speed, ram
FROM pc where code=3) p
UNPIVOT
(value FOR xxx IN
(speed, ram)
)AS unpvt
问题是当我想添加我的第二列 [chr]
SELECT value, chr <---- This does not work
FROM
(SELECT speed, ram, whatever, other
FROM pc where code=3) p
UNPIVOT
(value FOR xxx IN
(speed, ram)
)AS unpvt
UNPIVOT
(chr FOR zzz IN
(speed, ram, whatever, other)
)AS unpvt
我不知道如何在此代码中添加另一列。请任何建议。
【问题讨论】:
不清楚你在问什么。为什么需要两个UNPIVOT
?您的示例数据中的 code
列在哪里?
假设数据库中有代码列。我不需要 2 unpivot 。我只是不知道如何在这种情况下添加 chr 列。
You need this?
如果列“whatever”的类型与 UNPIVOT 列表中指定的其他列的类型冲突怎么办。
【参考方案1】:
你在找这个吗?
SELECT Chr, Value
FROM
(
SELECT t.*
FROM pc t
WHERE code = 3
) s
UNPIVOT
(
Value FOR Chr IN (Speed, Ram, Whatever, Other)
) p
输出:
|人力资源 |价值 | -------------------- |速度 | S3 | |拉姆 | R3 | |随便| W3 | |其他 |氧气 |这里是SQLFiddle演示
【讨论】:
以上是关于透视取消透视附加列的主要内容,如果未能解决你的问题,请参考以下文章