0

可能重复:
是否存在将多行聚合为一行的 Oracle SQL 查询?

我有以下输出用于我的 sql 查询以从 oracle 表中获取用户详细信息

   Select distinct userid from Scope1

USERID 
Rakesh 
Admin 

我希望输出如下所示,以便我可以更轻松地进行查询。请帮我。

USERID
'Rakesh','Admin'

谢谢

4

4 回答 4

1

尝试使用LISTAGG,Tim Hall 在这里有很好的文档

   select LISTAGG(''''||userid||'''', ',')
   WITHIN GROUP (ORDER BY userid) userid
   from Scope1

SQL 小提琴演示

于 2012-11-02T08:22:33.790 回答
0

下面的查询选择逗号分隔格式的数据:

SELECT 
   RTRIM (XMLAGG (XMLELEMENT (E, userid || ',')).EXTRACT ('//text()'), ',') AS UserID
FROM Scope1 ;

使用 wm_concat 怎么样:

SELECT wm_concat(''''||userid||'''') FROM Scope1;
于 2012-11-02T07:16:15.250 回答
0

看一下内置的 LISTAGG 函数:

http://docs.oracle.com/cd/E14072_01/server.112/e10592/functions087.htm

于 2012-11-02T07:19:10.543 回答
0

您需要一个在查询中执行循环的函数。该函数将返回您需要的数据的逗号分隔值。就像是:

str1 := '';
for rec in (select distinct userid from Scope1) 
loop
  str1 := str1 || rec.userid || ', ';
end loop;
str1 := substr(str1, 1, length(str1) - 2);
于 2012-11-02T07:15:13.540 回答