34,873
社区成员
发帖
与我相关
我的任务
分享declare @T TABLE ( [No] nchar(10) , [UpNo] nchar(10), [Level] int )
Insert @T ([No],[UpNo],[Level])
Select '11', '22', 1
Union Select '22', '33', 2
Union Select '33', '44', 3
select
t.No,t2.UPNO,t.Level
from
@T t join @T t2 on t.[Level]=t2.[Level]-1
where
T.No='11'
select
t.No,
t2.UPNO,
t.Level
from
@T t ,@T t2
where
T.No='11' and not exists(select 1 from @T where [Level]>t2.[Level])
/*
(所影响的行数为 3 行)
No UPNO Level
---------- ---------- -----------
11 33 1
(所影响的行数为 1 行)
No UPNO Level
---------- ---------- -----------
11 44 1
(所影响的行数为 1 行)
*/
--按结果写
declare @T TABLE ( [No] nchar(10) , [UpNo] nchar(10), [Level] int )
Insert @T ([No],[UpNo],[Level])
Select '11', '22', 1
Union Select '22', '33', 2
Union Select '33', '44', 3
select
distinct t.No,t2.UPNO,t.Level
from
@T t join @T t2 on t.NO<>t2.No
where
T.No='11'
(所影响的行数为 3 行)
No UPNO Level
---------- ---------- -----------
11 33 1
11 44 1
(所影响的行数为 2 行)
楼主自己想出来的算法吧?
既然这样,那结果就是:
select 11,33,1
呵呵```