0
我有一个包含以下字段的Sql Server2005中的查询问题
- Supervisorid
- EMPID表
这就像一个推荐计划。一个家伙可以参考他下面的3个家伙即 3指的是三个家伙即4 5 8同样4指的是9 10和11同样8指的是12,13它是这样去的
我想要查询得到一个家伙下线总成员数目3
我有一个包含以下字段的Sql Server2005中的查询问题
这就像一个推荐计划。一个家伙可以参考他下面的3个家伙即 3指的是三个家伙即4 5 8同样4指的是9 10和11同样8指的是12,13它是这样去的
我想要查询得到一个家伙下线总成员数目3
你可以使用递归CTE。
像这样的事情
DECLARE @Table TABLE(
Supervisorid INT,
Empid INT
)
INSERT INTO @Table SELECT 3, 4
INSERT INTO @Table SELECT 3, 5
INSERT INTO @Table SELECT 3, 8
INSERT INTO @Table SELECT 4, 9
INSERT INTO @Table SELECT 4, 10
INSERT INTO @Table SELECT 4, 11
INSERT INTO @Table SELECT 8, 12
INSERT INTO @Table SELECT 8, 13
DECLARE @ID INT
SELECT @ID = 3
;WITH Vals AS (
SELECT *
FROM @Table
WHERE SuperVisorID = @ID
UNION ALL
SELECT v.SuperVisorID,
t.Empid
FROM Vals v INNER JOIN
@Table t ON v.Empid = t.Supervisorid
)
SELECT SuperVisorID,
COUNT(Empid) Total
FROM Vals
GROUP BY SuperVisorID
考虑重新措辞/格式化你的问题。很难理解。 – RPM1984 2010-10-22 04:42:28
感谢@OMG小马。 :)仍然很难理解第二段寿(不是因为格式化,而是因为措辞不佳)。 – RPM1984 2010-10-22 04:43:24