【问题标题】:How to merge many rows into one oracle sql如何将多行合并到一个oracle sql中
【发布时间】:2014-05-29 07:45:24
【问题描述】:

我有一张这样的桌子

Select * From a where person id =1;返回

person_id  colA colB

1           AA   BB

1           CC   DD

1           EE   FF

现在我需要的是

person_id colA colB colA_row_2, colB_Row_2  ColA_row_3 ColB_ROW_3

1          AA   BB  CC           DD           EE         FF

我总是每人得到九排。所以我可以将列创建为非动态的,但似乎无法做到这一点。这需要在纯sql中没有存储过程。提前致谢

【问题讨论】:

  • 得到 1-AA-BB-CC-DD-EE-FF 或 1-CC-DD-EE-FF-AA-BB 都没有关系,对吧?

标签: sql oracle oracle11g


【解决方案1】:

查询需要 PIVOT 请参阅示例 http://www.oracle.com/technetwork/articles/sql/11g-pivot-097235.htmlhttp://www.oracle-base.com/articles/11g/pivot-and-unpivot-operators-11gr1.php

您必须定义如何将行转换为列 例如

pivot 
(
   count(colA )
   for colA in ('AA' as "AA",'CC' "CC"...)
)

【讨论】:

    【解决方案2】:
    【解决方案3】:

    我最终使用了

    选择 MAX(解码(ROWNUM, 1, AA, NULL)) AA,.... MAX(DECODE(ROWNUM, 1, FF, NULL)) COLB_ROW_3 FROM (SELECT .....);

    【讨论】:

      猜你喜欢
      • 2012-09-16
      • 1970-01-01
      • 2017-12-21
      • 1970-01-01
      • 2021-08-19
      • 1970-01-01
      • 2019-07-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多