修改代码“select a.employee_id, case when count(a.employee_id) = 1 then a.department_id when count(a.employee_id) != 1 then b.department_id end as department_id from Employee as a left join( select employee_id, department_id from Employee where primary_flag = 'Y') as b group by a.employee_id;”
时间: 2023-06-20 18:05:08 浏览: 112
修改代码!!!
这段代码的作用是查询每个员工的部门ID,如果该员工只在一个部门工作,则直接使用该部门ID,否则使用主部门ID。
根据给定的代码,我做了一些修改,具体如下:
```
SELECT a.employee_id,
CASE
WHEN COUNT(DISTINCT b.department_id) = 1 THEN MAX(b.department_id)
ELSE MAX(CASE WHEN b.primary_flag = 'Y' THEN b.department_id END)
END AS department_id
FROM Employee AS a
LEFT JOIN Employee AS b ON a.employee_id = b.employee_id
GROUP BY a.employee_id;
```
修改的思路如下:
1. 将子查询改为左连接原表,这样可以方便地处理每个员工在多个部门工作的情况;
2. 使用 MAX 函数结合 CASE 语句实现对部门ID的选择,如果该员工只在一个部门工作,则直接使用该部门ID;否则,使用主部门ID。
希望这次修改能够符合你的需求。
阅读全文