Oracle Database 11g Enterprise Edition リリース 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";
権限がないため、タイプを作成できません。他の同様の質問の 1 つで、誰かが collect の使用を提案しました。だからこれを使って:
SELECT number, CAST (COLLECT (USER) AS SYS.DBMSOUTPUT_LINESARRAY)
FROM emp
GROUP BY number;
ここからどこへ行けばいいのかわからない。このクエリを実行すると、次の列が表示されます。
CAST(COLLECT(USER)ASSYS
-----------------------
COLLECTION
COLLECTION
COLLECTION
ご覧のとおり、私の SQL の知識はごくわずかです。どんな助けでも大歓迎です!