Sql Oracle需要在单个列中包含多行数据

Sql Oracle需要在单个列中包含多行数据,sql,oracle,plsql,oracle11g,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 请帮帮我 您可以使用listag(): orderbynull没有指定特定的顺序,但它不能保证顺序。如果顺序不同,那么应该有一个明确的列 编辑: 在Oracle的

我有这样的桌子

 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
请帮帮我

您可以使用
listag()

orderbynull
没有指定特定的顺序,但它不能保证顺序。如果顺序不同,那么应该有一个明确的列

编辑:

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


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

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

我不能使用Listag,因为ma服务器版本是11.1
select cola, replace(wmsys.wm_concat(colB), ',', '|')
from table t
group by cola;
select 
   COLA,
   rtrim (xmlagg (xmlelement (e, COLB || ' | ')).extract ('//text()'), ' | ') COLB
from 
   [table_name]
group by 
   COLA
;