如何在SQL Server中形成管理层次结构



如何形成以下记录的管理层次结构?

输入数据:

名称[/tr>页面参考第1页Ashok库马尔第2页阿文第11页>坎南
Id 子Id描述
101 NULL 页面引用
102 2第2页
103 2
104 3 库马尔
105 4第二页
106 5
107 4第十一页
108 6Gova
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

最新更新