我有下表
emp id Teamid emp_add emp_type
112 1000 mum Sup
153 1000 del int
146 1000 lon man
124 1000 kar lead
我想通过这种方式对表进行分组:
Super_id EMP_ID Team_id emp_add emp_type
112 146 1000 lon man
112 153 1000 del int
112 124 1000 kar lead
我写了以下代码:
select case when emp_type = 'sup' then emp_id else null as Super_id,
case when emp_type <> 'sup' then emp_id,
teamid, emp_add, emp_type
from table
group by team_id, emp_type, emp_add;
我得到以下输出:
super_id emp_id team_id emp_add emp_type
null 146 1000 lon man
null 153 1000 del int
null 124 1000 kar lead
有人可以建议正确的密码
答案 0 :(得分:0)
您遇到问题,'sup'
必须是'Sup'
还
select (select max(emp_id) from table where emp_type = 'Sup') super_id,
emp_id,
teamid, emp_add, emp_type
from table
where emp_type != 'Sup';
但是您试图实现的目标看起来并不合理
答案 1 :(得分:0)
您可以进行自我加入:
SELECT
sup.empid AS super_id,
emp.empid,
emp.teamid,
emp.emp_add,
emp.emp_type
FROM your_table emp
LEFT JOIN (
SELECT *
FROM your_table sup
WHERE emp_type = 'Sup'
) sup
ON emp.teamid = sup.teamid
WHERE emp.empid <> sup.empid
答案 2 :(得分:0)
您可以使用以下代码:
select a.Super_id,b.emp_id,b.teamid,b.emp_add,b.emp_type
FROM
(SELECT MIN(emp_id) as Super_id FROM table) a,
(SELECT emp_id,teamid, emp_add, emp_type FROM table WHERE emp_id NOT IN(SELECT MIN(emp_id) emp_id FROM table)) b