我在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
答案 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;