Oracle 数据库 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";
我无法创建类型,因为我没有权限。在其他类似问题之一中,有人建议使用 collect。所以使用这个:
SELECT number, CAST (COLLECT (USER) AS SYS.DBMSOUTPUT_LINESARRAY)
FROM emp
GROUP BY number;
我不知道从这里去哪里。当我运行此查询时,我得到此列:
CAST(COLLECT(USER)ASSYS
-----------------------
COLLECTION
COLLECTION
COLLECTION
如您所见,我的 sql 知识非常少。任何帮助将非常感激!