这几天我一直在纠结这个。我有经理表、分配给他们的站点以及分配给这些站点的种植者。我需要知道经理有多少种植者。经理被分配到站点而不是种植者,所以我必须通过这个练习来找出特定经理有多少种植者,具体取决于分配给他拥有的每个单独站点的种植者。一个站点只有一个种植者。我可以很容易地获得特定经理的种植者数量,但我想返回一个包含每个经理的种植者数量的表格,我很难过。
我有以下代码:
DECLARE @ManagerID INT
DECLARE @getManagerID CURSOR
SET @getManagerID = CURSOR FOR
SELECT ID
FROM Managers
OPEN @getManagerID
FETCH NEXT
FROM @getManagerID INTO @ManagerID
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT COUNT(Grower) AS NumGrowers
FROM Growers
WHERE Growers.ID IN
(
SELECT sitesg.Grower
FROM SitesG
WHERE SitesG.id IN
(
SELECT SITE
FROM ManagerSites
WHERE ManagerSites.Manager IN
(
SELECT ID
FROM Managers
WHERE ID = @ManagerID
)
)
)
FETCH NEXT
FROM @getManagerID INTO @ManagerID
END
CLOSE @getManagerID
DEALLOCATE @getManagerID
这给了我一堆结果,我可能可以将它们存储在临时表中,但必须有更好的方法。有任何想法吗?
-乔