多个结果行在一行中

时间:2014-12-04 18:58:22

标签: sql oracle

我有这样的结果

Select a.Header1, a.Header2, a.Header3, b.header4,
From a
Join b on a.id = b.id

给出这个结果

Head1   Head2   Head3   Head4
1         A       1       AA
1         A       1       BB
1         A       1       CC
1         A       2       AA
1         A       2       CC
1         A       2       DD
1         A       2       EE

是否有可能

Head1   Head2   Head3   Head4 
1         A       1       AA    BB    CC
1         A       2       AA          CC    DD    EE

Head4被分成不同的列

1 个答案:

答案 0 :(得分:2)

不完全是。您可以使用listagg()函数将值连接到一个列中,然后可以在事后进行拆分。例如:

SELECT
    a.Header1,
    a.Header2,
    a.Header3,
    listagg(b.Header4, ', ') WITHIN GROUP (ORDER BY b.Header4) AS Header4
FROM a
JOIN b ON a.id = b.id
GROUP BY
    a.Header1,
    a.Header2,
    a.Header3

会屈服:

Header1   Header2   Header3   Header4 
1         A         1         AA, BB, CC
1         A         2         AA, CC, DD, EE