我有两张桌子:
表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
如何获得上述输出。
我有两张桌子:
表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
如何获得上述输出。
如果您有 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
你也可以使用收集
select empcode , collect(qualification_name) as qualifications
from test1 , test2
where test1.qualification_code = test2.qualification_code
group by empcode
您还可以使用用户定义的集合类型——在使用 PL/SQL 时非常有用。
看看这个(非常好的博客)
当我搜索“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
我不知道这一点,但我认为它很漂亮。