Oracle需要在单个列中使用多行数据

时间:2014-09-19 16:25:08

标签: sql oracle plsql oracle11g

我有这样的表

 COLA    COLB
  A       1
  A       2
  A       3
  B       12
  B       6
  C       8

我想要输出如下

 COLA      COLB
   A        1|2|3
   B        12|6
   C        8

请帮助我!

2 个答案:

答案 0 :(得分:0)

您可以使用listagg()

select cola, listagg(colB, '|') within group (order by NULL)
from table t
group by cola;

order by NULL指定没有特定订单,但它不保证订购。如果订单有所不同,您应该有一个明确的列。

编辑:

在早期版本的Oracle中,您可以使用wm_concat()

select cola, replace(wmsys.wm_concat(colB), ',', '|')
from table t
group by cola;

答案 1 :(得分:0)

试试这个。这适用于上面的Oracle 9i。

select 
   COLA,
   rtrim (xmlagg (xmlelement (e, COLB || ' | ')).extract ('//text()'), ' | ') COLB
from 
   [table_name]
group by 
   COLA
;