2014-03-03 56 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