数据库 - 在单个表中基于RowType的Pivot(没有自连接)

时间:2017-06-15 14:44:03

标签: sql database oracle pivot

我在Oracle中有下表,我需要根据RecType将其转换为多个列。

我在桌面上写了一个自连接,但RecType有5种类型,而且查询太大了,有没有更简单的方法可以做到这一点?

表我选择的是:

enter image description here

期望的输出:

enter image description here

2 个答案:

答案 0 :(得分:0)

根据需要添加更多recTypes ..这不是动态的,您需要对recTypes等进行硬编码..但是有效

SELECT  recNo, value1, value2, value3
  FROM  (
             SELECT t.recNo, t.rectype, max(t.value) value
             FROM   mytable t
             GROUP BY t.recType, t.RECNO
        )
 PIVOT  (
            max(value) FOR recType IN (103 value1, 191 value2, 108 value3)
        )

答案 1 :(得分:0)

尝试使用此透视查询:

SELECT RecNo, Value, RecType FROM tablename
PIVOT
(
    MAX(Value)
    FOR RecType
    IN (103 AS Value1, 191 AS Value2, 108 AS Value3)
)

要添加其他两个值,只需使用与Value1 / 2/3相同的模式添加它们。这确实假设您每个RecType和RecNo始终只有一个唯一Value,否则您最终会丢失信息。