再说ORACLE树查询

-- 查找 E006002 的所有父节点和级别[最近的为1级]
WITH CTE_PW (fPID,fFPID,lev) AS
(
    SELECT fPID,fFPID,0 AS lev FROM APP_POSITION WHERE fPID = 'E006002'
    UNION ALL
    SELECT E.fPID,E.fFPID,lev + 1 FROM CTE_PW T,APP_POSITION E
    WHERE T.fFPID = E.fPID
)
SELECT * FROM CTE_PW WHERE fPID <> 'E006002';
结果集合如下:
XH  FPID    FFPID   LEVEL
---------------------------
01  E006001 E003003 1
02  E003003 E003002 2
03  E003002 E003001 3
04  E003001 E000101 4
05  E000101 E000100 5
06  E000100 E000012 6
07  E000012 E000011 7
08  E000011 E000010 8
09  E000010 E000009 9
10  E000009 E000008 10
11  E000008 E000007 11
12  E000007 E000006 12
13  E000006 E000005 13
14  E000005 E000004 14
15  E000004 E000003 15
16  E000003 E000002 16
17  E000002 E000001 17
18  E000001 E000000 18
19  E000000 ROOT    19
-- 查找 E006002 的所有子节点和级别[最近的为1级]
WITH CTE_PW (fPID,fFPID,lev) AS
(
    SELECT fPID,fFPID,0 AS lev FROM APP_POSITION WHERE fPID = 'E006002'
    UNION ALL
    SELECT E.fPID,E.fFPID,lev + 1 FROM CTE_PW T,APP_POSITION E
    WHERE T.fPID = E.fFPID
)
SELECT * FROM CTE_PW WHERE fPID <> 'E006002';
结果集合如下:
XH  FPID        FFPID       LEVEL
----------------------------------
1   E006003     E006002     1
2   E006012     E006002     1
3   E100012329  E006002     1
4   E006004     E006003     2
5   E006013     E006012     2
6   E006014     E006012     2
7   E100012330  E100012329  2
8   E100012331  E100012330  3
9   E006060     E006014     3
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彖爻之辞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值