我有下表:

--------------------------------------------
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/

    10-12 15:53