serviceId(服务) prePmServiceId(前置服务)
服务1 null
服务2 服务1
服务3 服务2
如何根据这一的关联
写成这一的结果
serviceId(服务) prePmServiceId(前置服务) 服务步骤
服务1 null 1
服务2 服务1 2
服务3 服务2 3
服务步骤是根据关联得出的
如何用oracle sql 语句算出
服务1 null
服务2 服务1
服务3 服务2
如何根据这一的关联
写成这一的结果
serviceId(服务) prePmServiceId(前置服务) 服务步骤
服务1 null 1
服务2 服务1 2
服务3 服务2 3
服务步骤是根据关联得出的
如何用oracle sql 语句算出
with tab AS(
SELECT '服务1' serviceId, NULL prePmServiceId FROM dual
UNION ALL
SELECT '服务2', '服务1' FROM dual UNION ALL
SELECT '服务3', '服务2' FROM dual
)
SELECT serviceId,prePmServiceId,LEVEL
FROM tab
START WITH prePmServiceId IS NULL
CONNECT BY PRIOR serviceId=prePmServiceId
SERVICEID PREPMSERVICEID LEVEL
------------------------------------------
服务1 1
服务2 服务1 2
服务3 服务2 3
--connect by 递归树状结构的查询,level代表节点,即层级
select serviceid,prepmserviceid,level --level代表节点
from tab
start with prepmserviceid is null --起始节点,即根节点
connect by prior serviceid=prepmserviceid --构造条件
2 select '服务1' serviceId, null prePmServiceId from dual union all
3 select '服务2', '服务1' from dual union all
4 select '服务3', '服务2' from dual )
5 select serviceId,prePmServiceId,level
6 from tb
7 start with serviceId='服务1'
8 connect by prePmServiceId= prior serviceId
9 /
SERVICEID PREPMSERVICEID LEVEL
--------- -------------- ----------
服务1 1
服务2 服务1 2
服务3 服务2 3