2014-03-03 65 views
3

我有一个分类表,其中层次结构由id,parentid(即一个类别的ID作为另一个类别的parentid,然后它是该元素的子项)维护。我想递归地从一个孩子到直接父母,并检查列中的一个说FooterAdId为空或不。如果null向上并继续检查,则返回FooterAdId。我可以用一个CTE递归查询来获取顶级父,但我感到困惑如何适用条件上面描述的场景...SQL查询以获得满足条件的直接父项

enter image description here

这里我有ID 6在我的手,结果我想要如上所述将是101.

+0

样品输入与输出的需要!有助于 ! –

+0

请不要让您的标题全部大写。 –

+1

@ vijaykumar-hadalgi用示例数据和所需输出更新问题。 – Sree

回答

0

使用您的CTE和包括一个ROW_NUMBER()AS RowNum。然后,基于CTE的你

WITH MyCte AS 
    ... 
SELECT TOP 1 footeradid 
FROM MyCte 
WHERE footeradid IS NOT NULL 
ORDER BY RowNum 
0

试试这个,

Declare @t table (id int,parentid int,footerid int) 
insert into @t values(1,null,null),(2,null,100),(3,1,101),(4,3,null),(5,4,null),(6,5,null) 

;with CTE as 
(
select * from @t where id=6 
union all 
select a.* from @t a inner join cte b on a.id=b.parentid and b.footerid is null 

) 
select * from cte