Ham*_*teu 4 sql t-sql sql-server-2014
我有下表:
--------------------------------------------
ID ParentID Item
--------------------------------------------
1 root
2 1 AA
3 1 BB
4 1 CC
5 1 DD
6 2 A1
7 6 A11
ff.
Run Code Online (Sandbox Code Playgroud)
我希望得到以下结果:
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.
Run Code Online (Sandbox Code Playgroud)
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;
Run Code Online (Sandbox Code Playgroud)
将这些数据存储在表中是...麻烦,因为你需要保持更新.您可能希望在需要时即时计算它.
| 归档时间: |
|
| 查看次数: |
93 次 |
| 最近记录: |