我需要将查询的输出放在一行中,这样我就可以为所有文件创建一个tar文件。但是我的数据库运行在10g版本上。在这种情况下,LISTAGG是非常有用的。如何不使用LISTAGG实现与LISTAGG相同的输出
示例:
SQL> select col1 from table1;
col1
--------
file1
file2
file3
输出需要以下列格式,
col
--------
file1 file2 file3
发布于 2017-04-26 06:44:55
为此,我准备了以下查询。尽管有很多方法。
SELCT col1 FROM table1;
COL1
-----
file1
file2
file3
SELECT
RTRIM (XMLAGG (XMLELEMENT (c, col1 || ',')).EXTRACT ('//TEXT()'), ',') col1
FROM table1;
COL1
-----------------
file1,file2,file3
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;
这里是[医]小提琴,还有一种获得结果的方法。
阅读有关字符串聚合技术的更多信息
https://dba.stackexchange.com/questions/171997
复制相似问题