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