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 平衡计分卡
20 马华
30 人工商管理硕士

我想从两个表中选择,我想得到输出:

empcode :120633 学历 : BSC,MCA,MBA

如何获得上述输出。

4

3 回答 3

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

你也可以使用收集

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 回答
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 回答