【问题标题】: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 列。
  • 如果列“whatever”的类型与 UNPIVOT 列表中指定的其他列的类型冲突怎么办。

标签: sql pivot


【解决方案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演示

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-20
    • 1970-01-01
    • 1970-01-01
    • 2017-02-07
    • 2013-10-04
    • 2021-11-16
    相关资源
    最近更新 更多