我使用的是Oracle 10 g,我有一个类似于下面的场景:
没有名字
1罗尼
1詹姆斯
1个Aby
2个相同
2威利
3麦克风
我需要聚合和连接字符串(中间有一个空格),以获得结果:
没有名字
1罗尼·詹姆斯·阿比
2萨姆·威利
3麦克风
我使用的是Oracle10g,必须使用SQL而不是PL/SQL来实现。有没有出路?
发布于 2013-06-26 14:48:44
在11G上很容易,您可以使用LISTAGG函数,但遗憾的是,在10G上不是这样
这里有一些早期版本的技术,但是它们确实需要编写一个函数。
http://www.oracle-base.com/articles/misc/string-aggregation-techniques.php
发布于 2013-06-26 14:43:33
尝试此查询
select No , rtrim(Name,',') Name
from ( select No , Name , rn from yourtable
model
partition by (No)
dimension by (row_number() over
(partition by No order by Name) rn
)
measures (cast(Name as varchar2(40)) Name)
rules
( Name[any] order by rn desc = Name[cv()]||' '||Name[cv()+1]
)
)
where rn = 1
order by NO这是您的sql demo。
发布于 2013-06-26 14:47:56
您可以使用LISTAGG
请参阅demo here
https://stackoverflow.com/questions/17312848
复制相似问题