id text
1 hi
1 how are u
1 fine ?
2 rad
2 qey
3
我正在搜索一个查询,它可以让我将id = 1插入一列中的另一个表
id test
1 hi how are you fine ?
2 rad qey
使用listagg函数,我会得到这样的结果:你好,你好吗? ..我可以这样吗
喜
你好吗?
好吗?
答案 0 :(得分:1)
此查询可用于实现您的结果:
WITH tab(id,text) AS (
SELECT 1, 'hi' FROM dual UNION ALL
SELECT 1, 'how are u' FROM dual UNION ALL
SELECT 1, 'fine ?' FROM dual UNION ALL
SELECT 2, 'rad' FROM dual UNION ALL
SELECT 2, 'qey' FROM dual UNION ALL
SELECT 3, NULL FROM dual)
-----
--End of data
-----
SELECT ID,
listagg(text, ' ') within GROUP (ORDER BY ROWNUM) AS text
FROM tab
GROUP BY ID;
输出
ID TEXT
1 hi how are u fine ?
2 rad qey
3
但是有一个问题,虽然使用了rownum的顺序,但你不能保证文本的顺序,最好在你的表中再添一个可以定义文本顺序的列,如下所示
id text order_text
1 hi 1
1 how are u 2
1 fine ? 3
2 rad 1
2 qey 2
3 1
并将查询用作
SELECT ID,
listagg(text, ' ') within GROUP (ORDER BY order_text) AS text
FROM tab
GROUP BY ID;
答案 1 :(得分:-1)
您可以尝试使用LISTAGG功能。 有关详细信息,请see here.