sql 递归

redshift

CREATE OR  REPLACE view enriched_stage_ersdb.v_TCFG_CCHierarchy
as
with cteInit
as
(
SELECT   
H.HierarchyCode AS CCCode
,ISNULL(CC.Name, H.Description) AS CCName
, H.ParentCode AS CCParentCode,
          H.CreateTime as CreateTime
FROM      enriched_PRESTAGE_ERSDB.TCFG_CCHierarchy AS H LEFT OUTER JOIN
          enriched_PRESTAGE_ERSDB.TCFG_CostCenter AS CC 
          ON H.HierarchyCode = CC.Code AND H.ParentCode = CC.HierarchyCode 
),
cte_1
as
(
    select *,1 as HierarchyLevel from cteInit where CCParentCode is null
),
cte_2
as 

    select cteInit.*, 2 from cteInit  
    inner join cte_1 on cteInit.CCParentCode=cte_1.CCCode
)
,
cte_3
as 

    select cteInit.*, 3 from cteInit  
    inner join cte_2 on cteInit.CCParentCode=cte_2.CCCode
)
,
cte_4
as 

    select cteInit.*, 4 from cteInit  
    inner join cte_3 on cteInit.CCParentCode=cte_3.CCCode
)
,
cte_5
as 

    select cteInit.*, 5 from cteInit  
    inner join cte_4 on cteInit.CCParentCode=cte_4.CCCode
)
,
cte_6
as 

    select cteInit.*, 6 from cteInit  
    inner join cte_5 on cteInit.CCParentCode=cte_5.CCCode
)
,
cte_7
as 

    select cteInit.*, 7 from cteInit  
    inner join cte_6 on cteInit.CCParentCode=cte_6.CCCode
)
,
cte_8
as 

    select cteInit.*, 8 from cteInit  
    inner join cte_7 on cteInit.CCParentCode=cte_7.CCCode
)
,
cte_9
as 

    select *,1 as HierarchyLevel from cteInit where CCParentCode is null
    union all
       select cteInit.*, 2 from cteInit  
    inner join cte_1 on cteInit.CCParentCode=cte_1.CCCode
    union all 
    select cteInit.*, 3 from cteInit  
    inner join cte_2 on cteInit.CCParentCode=cte_2.CCCode
    union all 
    select cteInit.*, 4 from cteInit  
    inner join cte_3 on cteInit.CCParentCode=cte_3.CCCode
    union all
        select cteInit.*, 5 from cteInit  
    inner join cte_4 on cteInit.CCParentCode=cte_4.CCCode
    union all
        select cteInit.*, 6 from cteInit  
    inner join cte_5 on cteInit.CCParentCode=cte_5.CCCode
    union all
        select cteInit.*, 7 from cteInit  
    inner join cte_6 on cteInit.CCParentCode=cte_6.CCCode
    union all
        select cteInit.*, 8 from cteInit  
    inner join cte_7 on cteInit.CCParentCode=cte_7.CCCode
    union all
    select cteInit.*, 9 from cteInit  
    inner join cte_8 on cteInit.CCParentCode=cte_8.CCCode
)

select * from cte_9;
 

sql server

CREATE view [eRSDB].[v_TCFG_CCHierarchy]
as
with cteInit
as
(SELECT   H.HierarchyCode AS CCCode,ISNULL(CC.Name, H.Description) AS CCName
, H.ParentCode AS CCParentCode,
          H.CreateTime as CreateTime
FROM      [PRESTAGE].ERSDB.TCFG_CCHierarchy AS H LEFT OUTER JOIN
          [PRESTAGE].ERSDB.TCFG_CostCenter AS CC ON H.HierarchyCode = CC.Code AND H.ParentCode = CC.HierarchyCode 
),
cte
as
(
    select *,1 as [HierarchyLevel] from cteInit where CCParentCode is null
    union all
    select cteInit.*,[HierarchyLevel] +1  from cteInit  inner join cte on cteInit.CCParentCode=cte.CCCode
)

select * from cte 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值