首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Oracle 10g中获得LISTAGG函数的功能?

如何在Oracle 10g中获得LISTAGG函数的功能?
EN

Database Administration用户
提问于 2017-04-26 06:10:02
回答 1查看 955关注 0票数 0

我需要将查询的输出放在一行中,这样我就可以为所有文件创建一个tar文件。但是我的数据库运行在10g版本上。在这种情况下,LISTAGG是非常有用的。如何不使用LISTAGG实现与LISTAGG相同的输出

示例:

代码语言:javascript
运行
复制
SQL> select col1 from table1;

col1

--------
file1

file2

file3

输出需要以下列格式,

代码语言:javascript
运行
复制
col

--------
file1 file2 file3
EN

回答 1

Database Administration用户

发布于 2017-04-26 06:44:55

为此,我准备了以下查询。尽管有很多方法。

代码语言:javascript
运行
复制
SELCT col1 FROM table1;

COL1
-----
file1
file2
file3


SELECT 
   RTRIM (XMLAGG (XMLELEMENT (c, col1 || ',')).EXTRACT ('//TEXT()'), ',') col1
FROM table1;

COL1
-----------------
file1,file2,file3

代码语言:javascript
运行
复制
SELECT SUBSTR (SYS_CONNECT_BY_PATH (col1, ','), 2) col1
      FROM (SELECT col1 , ROW_NUMBER () OVER (ORDER BY col1 ) rn,
                   COUNT (*) OVER () cnt
              FROM table1)
     WHERE rn = cnt
START WITH rn = 1
CONNECT BY rn = PRIOR rn + 1;

这里是[医]小提琴,还有一种获得结果的方法。

阅读有关字符串聚合技术的更多信息

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/171997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档