DB2 Join返回多个重复项

时间:2018-11-28 14:50:07

标签: sql db2

我在db2中有一个非常简单的选择查询,在这里我只想要一个与左表(emps)不同的记录,但是通过为managerName添加管理器表,我得到了重复的记录,因为管理器表可以分配多行管理器给同一位员工。

SELECT DISTINCT number, name, status, managerNum, m.managerName
from emps e
left outer join managers m
    on e.managerNum = m.managerNum
group by number, name, status, managerNum, m.managerName;

有没有一种方法可以确保我仅从左表中获取单个记录,并且仅获取每个中的managerName?换句话说,我每个“号码”只能有一条记录;

表格数据示例:

emps

number | name | status | managerNum
-----------------------------------
123      Emp1   Active    321

经理

empNumber | managerNum | managerName | location
-----------------------------------------------
123           321          manager        1
123           321          manager        2aa

1 个答案:

答案 0 :(得分:2)

其中一些任意经理:

with emp (number, name, status, managerNum) as (values 
  (123, 'Emp1', 'Active', 321)
)
, managers (empNumber, managerNum, managerName, location) as (values 
  (123, 321, 'manager', '1')
, (123, 321, 'manager', '2aa')
)
SELECT e.number, e.name, e.status, e.managerNum, m.managerName
from emp e
left join table(select managerName from managers m where m.managerNum=e.managerNum fetch first 1 row only) m on 1=1;