0

这就是我得到的

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

请帮忙

提前谢谢。

4

3 回答 3

1

您没有说明您的版本,所以我假设当前版本(11.2):

select menuid, menuname, name, listagg(privilege, ',')
from menu
group by menuid, menuname, name
于 2012-07-16T07:21:54.647 回答
1

您可以使用listagg相同的功能,如下所示 -

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

以供参考

于 2012-07-16T07:24:08.280 回答
1

如果您没有使用 oracle 11gR2,那么还有其他方法 - 阅读这里

和 XMLAGG 方式:

select menuid, menuname, name, trim(xmlagg(xmlelement(e, privilege || ','))
              .extract('//text()')) Privilege
from table_name
group by MenuId,MenuName,Name
于 2012-07-16T12:38:03.477 回答