Sai*_*oon 4 sql oracle oracle10g string-aggregation
这是一个示例表数据
Fruit Number
Apple 1
Apple 2
Apple 3
Kiwi 6
Kiwi 10
Run Code Online (Sandbox Code Playgroud)
我尝试连接表列值以获得以下内容
Fruit Number
Apple 1-2-3
Kiwi 6-10
Run Code Online (Sandbox Code Playgroud)
有没有办法查询这个或存储过程?像Concatenate over(partition by)之类的东西,我对存储过程知之甚少.谢谢!
您不需要存储过程.使用listagg功能:
select fruit, listagg(number, ',') within group (order by number)
from mytable
group by fruit
Run Code Online (Sandbox Code Playgroud)
如果您的数据库版本是10g,它仍然很简单:使用WM_CONCAT(如果无法识别名称可能尝试WMSYS.WM_CONCAT)功能,请参阅此答案中的示例.如果你需要使用不同的分隔符,,你可以将结果包装在replace函数中; 如果你想订购结果只是在子查询中预先订购,例如:
select fruit, replace(wm_concat(number), ',', '-')
from (select fruit, number
from mytable
order by number)
group by fruit
Run Code Online (Sandbox Code Playgroud)
如果你对某些神秘的原因没有在您的实例可以使用的功能填充工具,请参阅我的答案在这里.