你好,我有一个数据库,我需要回答一个问题,即一些员工是否为多个承包商工作。我相信所有这些信息都在一张表中。
contract
(contractor_no FK,emp_no FK,job_no FK,is_active)可能涉及的其他表格
cont_employee
(emp_no PK,emp_fname,emp_lname,birth_date)contractor
(contractor_no PK,contractor_name)答案 0 :(得分:2)
由员工分组并仅选择具有多个记录的那些
select e.emp_no, e.emp_fname, e.emp_lname
from cont_employee e
join contract c on e.emp_no = c.emp_no
where c.is_active = 1
group by e.emp_no, e.emp_fname, e.emp_lname
having count(distinct c.contractor_no) > 1
答案 1 :(得分:0)
以上查询使用group by on varchar列并使用distinct。 你可以尝试row_number。 像这样,
SELECT * FROM
(
select e.emp_no, e.emp_fname, e.emp_lname
,ROW_NUMBER()OVER(PARTITION BY emp_no
ORDER BY contractor_no) ROWNUM
from cont_employee e
join contract c on e.emp_no = c.emp_no
where c.is_active = 1
)T4
WHERE ROWNUM>1