我有下表:
--------------------------------------------
ID ParentID Item
--------------------------------------------
1 root
2 1 AA
3 1 BB
4 1 CC
5 1 DD
6 2 A1
7 6 A11
ff.
我想得到以下结果:
ID ParentID Item Level
---------------------------------------------
1 root 0
2 1 AA 1
3 1 BB 1
4 1 CC 1
5 1 DD 1
6 2 A1 2
7 6 A11 3
ff.
level
的最佳主意是什么?是创建一个新列并添加一个公式或诸如计算或函数之类的东西? t-sql
上实现? 最佳答案
您将使用递归 CTE:
with cte as (
select t.id, t.parentid, t.item, 0 as lvl
from t
where parentid is null
union all
select t.id, t.parentid, t.item, cte.lvl + 1 as lvl
from t join
cte
on t.parentid = cte.id
)
select *
from cte;
将这些数据存储在表中是 。 . .麻烦,因为你需要保持更新。您可能只想在需要时即时计算它。
关于sql - 递归表 SQL 上的 View 级别号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49528697/