【发布时间】:2015-01-10 02:38:31
【问题描述】:
我有一个结构如下的表
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
有什么方法可以实现吗?
谢谢
【问题讨论】:
标签: sql-server tsql sql-server-2012