如何形成以下记录的管理层次结构?
输入数据:
Id | 子Id | 名称描述 | [/tr>
---|---|---|
101 | NULL | 页面引用 | 页面参考
102 | 2 | 第1页第2页 |
103 | 2 | Ashok|
104 | 3 | 库马尔 | 库马尔
105 | 4 | 第2页第二页 |
106 | 5 | 阿文|
107 | 4 | 第11页第十一页 |
108 | 6 | >Gova |
109 | 7 | Gokul |
110 | 8 | 坎南
新的叶id是条件逻辑。至于页面,它有点棘手:行的排序似乎定义了依赖项,所以基本上你想把每个级别3的叶子与前面的级别2联系起来。
以下是一种使用窗口计数来识别属于同一页面的叶子的方法:
select id, subid, name,
case when sub_id is not null
then max(case when name like 'Page %' then name end) over(order by id)
end as page,
case
when subid is null then 1
when name like 'Page %' then 2
else 3
end as new_leaf_id
from (
select t.*,
sum(case when name like 'Page %' then 1 else 0 end) over(order by id) grp
from mytable t
) t