这是一个示例表数据
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 https://stackoverflow.com/a/4970624/1990451回答。以防万一您需要使用与以下不同的分隔符,
,您可以将结果包装在replace
功能;如果您想对结果进行排序,只需在子查询中对其进行预排序,例如:
select fruit, replace(wm_concat(number), ',', '-')
from (select fruit, number
from mytable
order by number)
group by fruit
如果您出于某种神秘的原因在您的实例中没有该功能,您可以使用polyfill,看我的回答here https://stackoverflow.com/a/22145391/1990451.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)