重複の可能性:
OracleでA、B形式の2列のデータを取得する方法
次のようなテーブルがあるとします。
NAME GROUP_NAME
name1 groupA
name2 groupB
name5 groupC
name4 groupA
name3 groupC
このような結果が欲しいのですが:
GROUP_NAME NAMES
groupA name1,name4
groupB name2
groupC name3,name5
テーブルに列が1つしかない場合は、次のようにしてレコードを連結できますが、コンテキストでグループ化すると、あまりわかりません。
1つの列テーブルの連結:
SELECT names
FROM (SELECT SYS_CONNECT_BY_PATH(names,' ') names, level
FROM name_table
START WITH names = (SELECT names FROM name_table WHERE rownum = 1)
CONNECT BY PRIOR names < names
ORDER BY level DESC)
WHERE rownum = 1
更新しました:
私は今、以下を使用して解決策を持っていますLISTAGG
:
SELECT
group_name,
LISTAGG(name, ', ')
WITHIN GROUP (ORDER BY GROUP) "names"
FROM name_table
GROUP BY group_name
利用できない場合のより「一般的な」ソリューションに引き続き関心LISTAGG
があります。