Oracle SQL:选择

时间:2017-07-08 16:49:15

标签: xml oracle select trim string-concatenation

我有以下作为更大的Select查询的一部分到目前为止工作得很好,并帮助我为column1中的每个记录只获得一行。

但是,这会为column2,column3和column4返回一个单独的XML元素,而我需要将它们全部放在一列中。

有人可以告诉我如何将这三列的XML元素合并为一个吗?
在研究这个时,我遇到XMLFOREST,但这似乎不是一个广泛使用的功能,我不知道如何在这里应用它。

我的查询(相关部分):

SELECT
    a.column1 AS Column1
    , RTRIM(XMLAGG(XMLELEMENT(e, b.column2) ORDER BY b.column2).EXTRACT('//text()'), ',') AS Column2
    , RTRIM(XMLAGG(XMLELEMENT(e, b.column3) ORDER BY b.column3).EXTRACT('//text()'), ',') AS Column3
    , RTRIM(XMLAGG(XMLELEMENT(e, b.column4) ORDER BY b.column4).EXTRACT('//text()'), ',') AS Column4
    , c.column5 AS Column5
    /* ... */
FROM
    /* ... */

当前输出:
Current output

要求输出
Required output

非常感谢您的任何帮助,
麦克

1 个答案:

答案 0 :(得分:-1)

SELECT
    a.column1 AS Column1
    , RTRIM(XMLAGG(XMLELEMENT(e, b.column2||','||b.column3||','||b.column4) ORDER BY b.column2).EXTRACT('//text()'), ',') AS Column2
    , c.column5 AS Column5
    /* ... */
FROM
    /* ... */