我有一个表结构如下SQL递归CTE - 请参考亲
userId userName managerId
----------- ---------------- -----------
1 John NULL
2 Charles 1
3 Nicolas NULL
4 Neil 3
而且我有具有以下
userId shareId
----------- -----------
1 1001
3 1002
所以我下面的查询到另一个表让我的递归CTE:
WITH UserCTE AS (
SELECT userId, userName, managerId,0 AS steps
FROM dbo.Users
WHERE userId = 7
UNION ALL
SELECT mgr.userId, mgr.userName, mgr.managerId, usr.steps +1 AS steps
FROM UserCTE AS usr
INNER JOIN dbo.Users AS mgr
ON usr.managerId = mgr.userId
)
SELECT * FROM UserCTE AS u;
将会产生以下结果
userId userName managerId steps
----------- ---------------- ----------- -----------
1 John NULL 0
2 Charles 1 1
3 Nicolas NULL 0
4 Neil 3 1
好吧,我想知道的是shareId
为拥有它的用户,也为属于他们的用户。
预期结果:
userId userName managerId steps shareId
----------- ---------------- ----------- ----------- ----------
1 John NULL 0 1001
2 Charles 1 1 1001
3 Nicolas NULL 0 1002
4 Neil 3 1 1002
有什么办法实现呢?
感谢
非常感谢,这正是我所期待的。 – user3362714 2015-01-10 19:32:59