-1
我只想选择/显示最低级别的CTE。请帮忙。我正在使用SQL Server 2016.SQL Server CTE:如何仅选择最低级别
Create Table Location
(
Id int
Name varchar(20)
Parent int
)
Insert into location
values (1, Location1, null), (2, Location1child, 1),
(3, Location1grandchild, 2), (4, Location2, null),
(5, Location3, null), (6, Locationchild3, 5)
我只需要显示最低级别的记录3,4,6。
更新:我已经创建了查询,但记录号码4没有显示。我期待记录数为4,因为记录是组中最低的水平。
With CTE (id, cte_level, cte_name, cte_longname) as
(
Select
A.ID, 1,
cast(A.name as varchar(max)),
cast(A.name as varchar(max))
from
Location A
Union All
Select
A.ID, cte_level + 1,
replicate(' · ' , cte_level) + cast(A.name as varchar(max)),
cte.cte_longname + ' . ' + cast(A.name as varchar(max))
from
Location A
inner join
CTE ON A.Parent = CTE.id
)
select
CTE_2.id,
CTE_2.cte_longname [name]
--, A.cte_name [name]
from
CTE as CTE_1
inner join
CTE as CTE_2 on CTE_1.id = cte_2.id
where
CTE_1.cte_level = 1
And CTE_2.cte_level = (Select MAX(CTE.cte_level) From CTE)
order by
cte_2.cte_longname
你会在你的查询/ CTE中编辑,加上输入数据和预期结果,所以人们可以理解这一点更好?我不清楚你目前的含义是什么。如果你还可以提供一个最有用的SQL小提琴。 – halfer