我有一个简单的查询:
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) 我的投入是这样的.
col1 col2
1 a
1 b
2 c
2 d
2 e
Run Code Online (Sandbox Code Playgroud)
O/p:应该是这样的
col1 col2
1 a,b
2 c,d,e
Run Code Online (Sandbox Code Playgroud)
我想要一个可以在DB级别触发的查询.我尝试了各种各样的方法,但未能做到这一点......
我在oracle数据库中有两列
+---------+---------+
| Column1 | Column2 |
+---------+---------+
| A | 1 |
| A | 2 |
+---------+---------+
Run Code Online (Sandbox Code Playgroud)
我希望退出数据,就像我将获得数据一样
+---------+---------+
| Column1 | Column2 |
+---------+---------+
| A | 1,2 |
+---------+---------+
Run Code Online (Sandbox Code Playgroud)
请给我解决方案.