2013-11-26 3 views
0

Я пытаюсь отобразить данные в таблице cuser как таквыбора повторяющихся данных и отображения в виде таблицы

a_User 
___________________ 
1, Ben, 

2, Joe, 

3, Tom, 

User_group 
______________ 
1, 1, 

1, 2, 

1, 3, 

2, 2, 

3, 1, 

a_Group 
________________ 
1, All Access, 

2, Customer Service, 

3, Finance, 

Так что он всплывает как

____________________________________________ 

Ben, All Access, Customer Service, Finance 

Joe, null, Customer Service, null 

Tom, All Access, null, null 

вместо этого я получаю

____________________________________________ 

Ben, All Access, All Access, All Access, 
Ben, Customer Service, Customer Service, Customer Service, 
Ben, Finance, Finance, Finance 
Joe, Customer Service, Customer Service, Customer Service, 
Tom , All Access, All Access, All Access, 

Я присоединил внешнее левое соединение к нему, но я не могу заставить столбцы привязываться к описаниям.

select su.usernum, 
    su.username, 
    su.descr, 
    su.email, 
    sfg1.functiongroup, 
    sfg2.functiongroup, 
    sfg3.functiongroup 
from a_user su 
left outer join User_group suf on su.usernum = suf.usernum 
left outer join a_group sfg1 on suf.fgroupnum = sfg1.fgroupnum 
left outer join a_group sfg2 on suf.fgroupnum = sfg2.fgroupnum 
left outer join a_group sfg3 on suf.fgroupnum = sfg3.fgroupnum 
where sfg1.FGROUPNUM = 1 
    or sfg2.FGROUPNUM = 2 
    or sfg3.FGROUPNUM = 3; 

Любые идеи, было бы очень удобно,

Почувствуйте, как я что-то на самом деле действительно основной хватает.

+0

Чтобы получить группы из столбцов в строки, вы должны работать с 'pivot', я думаю. Не использовал его сам до сих пор, но посмотрите [здесь] (http://www.oracle-base.com/articles/11g/pivot-and-unpivot-operators-11gr1.php) – Armunin

+0

Привет всем, это оракул 10, надеюсь, это возможно? –

ответ

0

В Oracle 11.2 вы можете использовать новую функцию LISTAGG

Но это не доступно в Oracle 10 (которая из поддержки, кстати), вы должны записать его в функцию, я думаю.

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