相关疑难解决方法(0)

如何将多行组合到Oracle中以逗号分隔的列表中?

我有一个简单的查询:

select * from countries
Run Code Online (Sandbox Code Playgroud)

结果如下:

country_name
------------
Albania
Andorra
Antigua
.....
Run Code Online (Sandbox Code Playgroud)

我想在一行中返回结果,所以像这样:

Albania, Andorra, Antigua, ...
Run Code Online (Sandbox Code Playgroud)

当然,我可以编写一个PL/SQL函数来完成这项工作(我已经在Oracle 10g中完成了),但是对于这个任务是否有更好的,最好是非特定于Oracle的解决方案(或者可能是内置函数) ?

我通常会用它来避免子查询中的多行,所以如果一个人有一个以上的公民身份,我不希望她/他在列表中是重复的.

我的问题是基于SQL Server 2005上的类似问题.

更新:我的功能如下:

CREATE OR REPLACE FUNCTION APPEND_FIELD (sqlstr in varchar2, sep in varchar2 ) return varchar2 is
ret varchar2(4000) := '';
TYPE cur_typ IS REF CURSOR;
rec cur_typ;
field varchar2(4000);
begin
     OPEN rec FOR sqlstr;
     LOOP
         FETCH rec INTO field;
         EXIT WHEN rec%NOTFOUND;
         ret := ret || field || sep;
     END LOOP;
     if length(ret) …
Run Code Online (Sandbox Code Playgroud)

sql oracle pivot concatenation string-aggregation

101
推荐指数
5
解决办法
38万
查看次数

Oracle - 可以使用 concat 进行子查询吗?

是否可以将子查询的结果与oracle连接起来?

如果这个子查询是一个视图:

  (SELECT s.name
        FROM
            app_shared_servers ass
        LEFT JOIN servers s
            ON (s.srv_id = ass.srv_id) WHERE ass.app_id = a.APP_ID) SHARED_SERVERS
Run Code Online (Sandbox Code Playgroud)

它返回与某种系统关联的服务器名称列表。我需要它们在视图中显示为“Server、Server2、Server3”。

有任何想法吗?

sql oracle

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

oracle ×2

sql ×2

concatenation ×1

pivot ×1

string-aggregation ×1