3

select ステートメントの結果を 1 行に連結しようとしています。
例: この select ステートメントの出力の場合:

Name  
ABC  
DEF  
GHI

次の出力が必要でした:
名前

1 ABC, 2 DEF, 3 GHI  

(各行の前に行番号を追加する必要があることを意味します
) wm_concat() 関数を使用していますが、次の o/pが表示されABC,DEF,GHI
ます。

4

2 に答える 2

3

これに似たものが欲しいようです。このlistagg()関数は Oracle 11g+ で使用できます。

select listagg(cast(rownum as varchar2(20))||' '|| name, ', ') 
        within group (order by name) name
from yourtable

デモで SQL Fiddle を参照してください

結果:

|                NAME |
-----------------------
| 1 ABC, 2 DEF, 3 GHI |

Oracle 11g をお持ちでない場合は、次を使用できますwm_concat()

select wm_concat(cast(rownum as varchar2(20))||' '|| name) name
from yourtable
于 2012-11-03T15:28:56.540 に答える
0

さらに、WITH 句を使用できます。

WITH tmp AS 
(
   :your_select_statement 
)
SELECT 
  LISTAGG(rownum || ' ' || :your_column, ', ') 
  WITHIN GROUP (ORDER BY :your_column) tmp
FROM tmp;

次に、rownum はプライマリ テーブルからではなく :your_select_statement の結果を持つ tmp 一時テーブルからのものです。

于 2012-11-03T16:00:08.773 に答える