2
我有一個表中有層次結構。SQL Server CTE層次結構?
讓我們從Id = 5
開始;這是孩子。 (一給出啓動參數 - 從用戶)
算法:
- 給我,你已經遇到
id = 5
- ,如果你還沒有找到價值
id = 5
的first
值,去其父母和給我他的id
- 如果這個父母也沒有價值 - 去其父母...等(直到父母沒有父母 -
parentId = 0
)
p.s.這裏的結果應該是7
如果7值爲空,因此:9
結束時,如果9也是空的,所以:1
我試圖用CTE,但沒有成功做到這一點..
ps我想想要與CTE的解決方案。 :)
我已經試過(甚至不看它 - 它不工作):
WITH cte AS (
SELECT
id,VALUE,parentid
FROM [test].[dbo].[tmp] WHERE id=5
UNION ALL
SELECT
id,VALUE,parentid
FROM [tmp] WHERE parentId=cte.parentId) //ERROR : The multi-part identifier "cte.parentId" could not be bound.
SELECT * FROM cte
您的查詢返回所有行。它假設只返回7. – 2012-01-05 21:14:13
添加'coalesce'語句。現在,如果您想從某個任意點開始並找到該值,那麼您可以選擇該值的前1並獲取該值,因爲它會將cte.value一直吹到上面。 – Eric 2012-01-05 21:18:25
感謝fot你的努力,但:如果我把id = 5 NULL的值,所以它返回我空,9,9我想做什麼3項?我怎樣才能獲得所需的價值? – 2012-01-05 21:23:38