2013-02-09 4 views
2

Я имею две таблицы:Как получить группировку выход в PLSQL

 
table1 : test1 

desc test1 

empcode number(6) 
qualification_code number(2) 

table2 :test2 

desc test2 

qualification_code number(2) 
qualification_name varchar2(10) 
select * from test1 
 
120633 10 
120633 20 
120633 30 
select * from test2 
 
10 BSC 
20 MCA 
30 MBA 

Я хочу, чтобы выбрать из двух таблиц, и я хочу, чтобы получить выход as:

 
empcode :120633 Qualification : BSC,MCA,MBA 

Как получить этот вывод выше.

+0

PL/SQL является ** только ** используется для хранимой процедуры в Oracle. Кажется, вам нужен SQL-решение. –

+0

в sql Как сделать – user2001117

+2

Какую версию Oracle вы используете? – BellevueBob

ответ

0

Когда я googled "оракул создать список из 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 

Я не знал этого, но я думаю, что это довольно скользким.

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 
0

вы также можете использовать СБОР

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

вы также можете использовать определенный пользователем тип коллекции - очень полезно при использовании с PL/SQL.

Проверить this из (очень хороший блог)

Смежные вопросы