代码之家  ›  专栏  ›  技术社区  ›  David Oneill

将一行转换为多行Oracle

  •  3
  • David Oneill  · 技术社区  · 14 年前

    我有一个查询总是返回一行, 许多的 柱。我想把它转换成2列和许多行。

    原始结果:

    Col1, Col2, Col3, Col4
    ----------------------
    val1, val2, val3, val4
    

    我想要什么:

    ColName, Value
    --------------
    Col1,    val1
    Col2,    val2
    Col3,    val3
    Col4,    val4
    

    这有可能吗?

    编辑(澄清)

    我正在寻找一种自动的方法来做这件事。我可以传递任何只返回1行的查询的结果。

    3 回复  |  直到 14 年前
        1
  •  2
  •   Pop    14 年前

    您使用的是Oracle 11g吗?你试过旋转和不旋转吗?

    更多信息 here .

        2
  •  3
  •   marc    14 年前

    当然。做

    select 'Col1' ColName, Col1 Value from srctable union all
    select 'Col2', Col2 from srctable union all
    select 'Col3', Col3 from srctable union all
    select 'Col4', Col4 from srctable
    
        3
  •  0
  •   Community Mike Causer    7 年前

    我猜您没有支持内置透视表的Oracle版本。不幸的是,它从来不是非常干净的代码,因为您必须构建每一行。

    例如,请参阅这篇旧文章

    transpose-select-results-with-oracle