我有一个简单的查询:
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) 是否可以将子查询的结果与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”。
有任何想法吗?