SQL递归查询
declare @t table(RecID int,PUnitNo nvarchar(100),UnitNo nvarchar(100),PathDepth int,Path nvarchar(100))
declare @level int
set @level=1
insert into @t
SELECT RecID,PUnitNo,UnitNo,@level AS PathDepth,Path
FROM RptSystemTree WHERE PUnitNo=''
WHILE @@rowcount>0
BEGIN
SET @level=@level+1
INSERT INTO @t
select a.RecID,a.PUnitNo,a.UnitNo,@level,(CASE WHEN b.Path='' THEN a.PUnitNo ELSE b.Path+'.'+a.PUnitNo END)
from RptSystemTree a,@t b
where a.PUnitNo=b.UnitNo
and b.PathDepth=@level-1
END
UPDATE RptSystemTree SET RptSystemTree.PathDepth = t.PathDepth,
RptSystemTree.Path = t.Path
FROM @t t
WHERE t.RecID = RptSystemTree.RecID
-------------------------------------
create table t
(bid int, p_bid int)
insert into t
select 1, null union all
select 2, 1 union all
select 3, 1 union all
select 4, 3 union all
select 5, 4 union all
select 6, 5 union all
select 7, 1 union all
select 8, 2
create function dbo.aa(@parent int)
returns @t table(p_bid int,bid int,level int)
as
begin
declare @level int
set @level=1
insert into @t
select p_bid,bid,@level from t where p_bid=@parent
while @@rowcount>0
begin
set @level=@level+1
insert into @t
select a.p_bid,a.bid,@level
from t a,@t b
where a.p_bid=b.bid
and b.level=@level-1
end
return
end
GO
select space(level*5)+cast(bid as varchar),* from dbo.aa(1)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架