这是一个示例表数据
Fruit Number
Apple 1
Apple 2
Apple 3
Kiwi 6
Kiwi 10
我尝试连接表列值以获得以下内容
Fruit Number
Apple 1-2-3
Kiwi 6-10
有没有办法查询这个或存储过程?
像 Concatenate over(partition by) 之类的东西,我对存储过程不太了解。谢谢!
最佳答案
您不需要存储过程。使用 listagg
功能:
select fruit, listagg(number, ',') within group (order by number)
from mytable
group by fruit
如果您的数据库版本是 10g 仍然很简单:使用
WM_CONCAT
(如果不识别名称可能尝试 WMSYS.WM_CONCAT
)函数,请参见 this 中的示例回答。以防万一您需要使用与 ,
不同的分隔符,您可以将结果包装在 replace
中功能;如果您想对结果进行排序,只需在子查询中对其进行预排序,例如:select fruit, replace(wm_concat(number), ',', '-')
from (select fruit, number
from mytable
order by number)
group by fruit
如果您出于某种神秘原因在您的实例中没有该功能,您可以使用 polyfill,请参阅我的回答 here .
关于sql - 通过 Oracle 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32356688/