如何解决如何在 SQL Server 中形成 Management Hierarchy Formation?
如何形成以下记录的管理层次?
输入数据:
ID | 子ID | 姓名 | 说明 |
---|---|---|---|
101 | NULL | 页面参考 | 页面参考 |
102 | 1 | 第 1 页 | 第 1 页 |
103 | 2 | 阿肖克 | 阿肖克 |
104 | 3 | 库马尔 | 库马尔 |
105 | 4 | 第 2 页 | 第 2 页 |
106 | 5 | 阿文德 | 阿文德 |
107 | 4 | 第 11 页 | 第 11 页 |
108 | 6 | 政府 | 政府 |
109 | 7 | 格库尔 | 格库尔 |
110 | 8 | 坎南 | 坎南 |
我尝试使用递归 CTE,但找不到确切的解决方案。需要以下格式, 条件是
New Leaf ID --> If Sub ID IS NULL,then it will be 1,If contains page row,it will be 2,if contains other than that it will be 3.
Page --> Whenever Page row starts,from the next row original information showing for that page. we need to form based on the lead rows.
输出数据:
ID | 子ID | 姓名 | 页面 | 新叶 ID |
---|---|---|---|---|
101 | NULL | 页面参考 | 1 | |
102 | 1 | 第 1 页 | 第 1 页 | 2 |
103 | 2 | 阿肖克 | 第 1 页 | 3 |
104 | 3 | 库马尔 | 第 1 页 | 3 |
107 | 4 | 第 11 页 | 第 11 页 | 2 |
108 | 6 | 政府 | 第 11 页 | 3 |
109 | 7 | 格库尔 | 第 11 页 | 3 |
110 | 8 | 坎南 | 第 11 页 | 3 |
105 | 4 | 第 2 页 | 第 2 页 | 2 |
106 | 5 | 阿文德 | 第 2 页 | 3 |
解决方法
新的叶子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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。