如何将多行合并到一个oracle sql中

时间:2014-04-15 05:44:02

标签: sql oracle oracle11g

我有一张表

选择*来自where 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中没有存储过程。提前致谢

3 个答案:

答案 0 :(得分:2)

您需要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"...)
)

答案 1 :(得分:1)

答案 2 :(得分:0)

我最终使用

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