2

私は2つのテーブルを持っています:

テーブル 1 : テスト 1

デスクテスト1

エンプコード番号(6)
資格コード番号(2)

テーブル 2 :テスト 2

デスク テスト 2

資格コード番号(2)
資格名 varchar2(10)
select * from test1
120633 10
120633 20
120633 30
select * from test2
10 BSC
20MCA
30MBA

2つのテーブルから選択したいので、出力を次のように取得したい:

empcode :120633 資格 : BSC,MCA,MBA

上記の出力を取得する方法。

4

3 に答える 3

0

「oracle create list from sql」をググってみたところ、ListAggが見つかりました。あなたの場合、次のようなものが必要です。

select empcode
, ListAgg(qualification_name, ',') 
within group (order by empcode) qualifications
from test1 join test2 on test1.qualification_code = test2.qualification_code
group by empcode

これは知りませんでしたが、かなりスマートだと思います。

于 2013-02-09T16:35:27.620 に答える
0

Oracle 11 以降を使用している場合は、次のLISTAGGように関数を使用できます。

select empcode
     , listagg(qualification_name, ',') 
          within group (order by qualification_name) as names
from   test1 
join   test2 
on     test2.qualification_code=test1.qualification_code
group by empcode
于 2013-02-09T16:39:11.480 に答える
0

COLLECTも使えます

select empcode , collect(qualification_name) as qualifications
from   test1 , test2
where  test1.qualification_code = test2.qualification_code
group by empcode

ユーザー定義のコレクション型を使用することもできます。これは、PL/SQL で使用する場合に非常に役立ちます。

これをチェックしてください(非常に良いブログ)

于 2013-02-10T15:02:15.617 に答える