我正在尝试创建一个Join语句,它将结合两个表,一个表用于员工信息,另一个表用于工作角色信息。这些表的结构如下:
表1
表2
我想以这样的方式联接这两个表,即JobKey和JobValue将与关联的雇员在同一行,而不创建重复的行。通常,join语句将创建以下内容:
相反,我想要的是这样的东西:
有有效的方法吗?
编辑: 这是我目前用来加入他们的查询:
select * from testTable1 as a left join testTable2 as b on a.EmployeeName = b.EmployeeName
答案 0 :(得分:1)
您可以使用条件聚合:
select t1.*, t2.jobkey_1, t2.jobvalue_1, t2.jobkey_2, t2.jobkey_2
from table1 t1 left join
(select t2.employeename,
max(case when seqnum = 1 then jobkey end) as jobkey_1,
max(case when seqnum = 1 then jobvalue end) as jobvalue_1,
max(case when seqnum = 2 then jobkey end) as jobkey_2,
max(case when seqnum = 2 then jobvalue end) as jobvalue_2,
from (select t2.*, row_number() over (partition by employeename order by rowid) as seqnum
from table2 t2
) t2
group by employeename
) t2;
注意:您似乎正在使用员工姓名作为表之间的联接键。您确实应该使用员工ID。