2014-03-26 90 views
0

我有下面的表,它存儲了合併項目的記錄。 這裏Merge1是主要項目,Merge2是二級項目,這意味着Merge2被合併到Merge1中。自加入SQL服務器

Merge1 Merge2 
------------------ 
1  2 
3  1 
4  3 
4  8 
9  6 
7  9 

現在我想編寫一個查詢將返回特定項目的內容說,項目編號4. 這裏項目4包含8,3,1 & 2。

我怎樣才能在SQL中做到這一點?

+0

圓形情況可能嗎? – 2014-03-26 07:43:05

+1

處理材料明細表(BOM)時通常遇到此類查詢。使用該術語和SQL Server進行搜索應找到大量示例。 –

+0

@ dan1111:循環狀態意味着什麼? – punter

回答

1

以下是提供所需結果的查詢。 (Fiddle

with cte_merge (projectid) 
AS 
(
    select merge2 from testBOM where merge1=4 
    UNION ALL 
    select merge2 from testBOM inner join cte_merge on testBOM.merge1 = cte_merge.projectid 
) 
select * from cte_merge 

希望它可以幫助你。

+0

感謝隊友:)完美工作! – punter

+0

歡迎。我很高興它的工作。 :) –