Oracle Database 11g企业版11.2.0.2.0版 - 64位生产。
我有一个以下格式的表格。
Number User Value
-------------------
1 A 25
1 B 28
2 C 30
2 D 35
这就是我想要的:
Number User Value
-------------------
1 A,B 25,28
2 C,D 30,35
我尝试使用Listagg,但它给了我ORA-01489: result of string concatenation is too long.
这是listagg命令:
SELECT "Number",
LISTAGG ("user", ', ') WITHIN GROUP (ORDER BY "user") "user",
LISTAGG ("value", ', ') WITHIN GROUP (ORDER BY "user") VALUE
FROM table
GROUP BY "Number";
我无法创建类型,因为我没有权限。在其他一个类似的问题中,有人建议使用收集。所以使用这个:
SELECT number, CAST (COLLECT (USER) AS SYS.DBMSOUTPUT_LINESARRAY)
FROM emp
GROUP BY number;
我不知道从哪里开始。当我运行此查询时,我得到此列:
CAST(COLLECT(USER)ASSYS
-----------------------
COLLECTION
COLLECTION
COLLECTION
正如您所看到的,我的SQL知识非常少。任何帮助将不胜感激!
答案 0 :(得分:1)
尝试使用xmlagg方法:
rtrim(xmlagg(xmlelement(e, name1 || ',')).extract('//text()').getclobval(), ',')