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
;