2012-07-16 42 views
0

分离这就是我得到如何采取从Oracle行用逗号

parent MenuName Name  menu2 type  menuId menu2Id 
-------------------------------------------------------------- 
26 General Currency Add 3 27 29 
26 General Currency Delete 3 27 31 
26 General Currency Update 3 27 30 
26 General Currency View 3 27 28 
26 General Country Add 3 32 34 
26 General Country Delete 3 32 36 
26 General Country Update 3 32 35 

我想这样

MenuId MenuName Name  Privilege 
------------------------------------------------ 
27  General Currency Add,Delete,Update,View 
32  General Country Add,Delete,Update 

请与本

提前THX帮助。

回答

1

你没有说明你的版本,所以我认为目前的版本(11.2):

select menuid, menuname, name, listagg(privilege, ',') 
from menu 
group by menuid, menuname, name 
1

您可以使用listagg功能同样喜欢后续 -

select MenuId, 
     MenuName, 
     Name, 
     listagg(menu2,',') within group (order by 1) Privilege 
from table_name 
group by MenuId,MenuName,Name 

for reference

1

如果您不使用oracle 11gR2,那么还有其他方法 - 读取here

和XMLAGG方式:

select menuid, menuname, name, trim(xmlagg(xmlelement(e, privilege || ',')) 
       .extract('//text()')) Privilege 
from table_name 
group by MenuId,MenuName,Name