概括:
我有一个我试图分配给工作人员列表的工作项列表。每个工作最多只能分配 100 个工作项。每个工作项都指定了应该使用它的用户(关联为所有者)。
例如:
Jim 共有 5 个帐户,每个帐户具有多个工作项。吉姆总共有 50 项工作已经分配给他。我只能再分配 50 个。
我的困境/目标:
我正在使用一个临时表和一个 select 语句来获取每个所有者当前分配给他们的项目的数量,我计算新项目的可用插槽并将值存储在新列中。我需要能够从所有者与我的所有者列表及其可用项目(在临时表中)匹配的项目表中进行选择,仅检索每个用户的行数等于每个用户的可用插槽数 - 查询将只返回 50 行给 jim,即使可能有 200 行符合条件,而 sam 可能会得到 0 行,因为他没有可用的插槽,而在 items 表中有 30 个项目可供他使用。
我意识到我可能错误地处理了这个问题。我想避免使用游标。
编辑:添加一些示例代码
SELECT
nUserID_Owner
, CASE
WHEN COUNT(c.nWorkID) >= 100 THEN 0
ELSE 100 - COUNT(c.nWorkID)
END
,COUNT(c.nWorkID)
FROM tblAccounts cic
LEFT JOIN tblWorkItems c
ON c.sAccountNumber = cic.sAccountNumber
AND c.nUserID_WorkAssignedTo = cic.nUserID_Owner
AND c.nTeamID_WorkAssignedTo = cic.nTeamID_Owner
WHERE cic.nUserID_Collector IS NOT NULL
AND nUserID_CurrentOwner = 5288
AND c.bCompleted = 0
GROUP BY nUserID_Owner
这提供了 5288、50、50 的输出值(在 Jim 的场景中)