sql迭代(with)查询上下级等,以及sqlserver的行列转换

本文通过实例演示了如何使用SQL的WITH语句进行上级查找、员工等级评定、行列转换以及聚合操作,展示了从下往上和从上往下的递归查询方法,适用于SQL Server和MySQL数据库。
摘要由CSDN通过智能技术生成

1 .从下往上迭代找上级

emp表

1 为了便于分析,先拿一个员工

select * from emp a


where a.empno in ('7369')

2 用with迭代出7369的所有上级(迭代里面不能用外部关联)


with  tt as
(
select a.empno ,a.ENAME,a.mgr,b.ENAME  as mgr_ENAME,count(b.EMPNO)over(partition by a.empno) as rn
from emp a
left join emp b on a.MGR=b.EMPNO
where a.empno in ('7369')--,'7566','7839','7902')

union all


select a.empno,a.ENAME,b.MGR,c.ename as mgr_ENAME,rn+1 as rn
from  tt  a
inner join emp b on a.MGR=b.EMPNO
inner join emp c on b.MGR=c.EMPNO
 

select * from tt 

3. 给该员工评定等级(最上层领导为1)


with  tt as
(
select a.empno ,a.ENAME,a.mgr,b.ENAME  as mgr_ENAME,count(b.EMPNO)over(partition by a.empno) as rn
from emp a
left join emp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值