2

BREAK ON コマンドを使用して、重複するフィールド名の出力を停止するコマンドを作成しました。例えば:

f.name | f.value
f.name | f.value
f.name | f.value

になります:

f.name | f.value
       | f.value
       | f.value

この出力を次のようにする方法はありますか:

f.name | f.value,f.value,f.value

場合によっては、f.name フィールドに 20 を超える f.value が関連付けられています。

出力は最終的に他の場所にインポートするために使用されるため、出力をできるだけ使いやすいものにしようとしています。

4

1 に答える 1

2

SQL*Plus コマンドを探しているのではなく、文字列の集計を探しています。

現在のクエリが次のとおりであると仮定します。

select name, value from my_table

次のように変更して、目的の結果を得ることができます。DISTINCT は、リスト内の重複した結果を排除するために含まれています。

select name, listagg(value, ', ') within group (order by value) as value
  from ( select distinct name, value from my_table )
 group by name

LISTAGG()は 11.2 でのみリリースされました。以前のバージョンの Oracle を使用している場合は、文書化されていない関数 WM_CONCAT() またはユーザー定義関数 STRAGG() を使用できます

于 2013-03-16T13:28:55.747 に答える