Sql 如何从Oracle中获取以逗号分隔的行

Sql 如何从Oracle中获取以逗号分隔的行,sql,oracle,Sql,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

这就是我得到的

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提前。

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


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


您可以使用
listag
函数执行以下相同操作-

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

您可以使用
listag
功能进行以下相同操作-

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

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

以及XMLAGG方式:

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

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

以及XMLAGG方式:

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