我假设开始日期和结束日期被格式化为日期时间或日期。
我不确定您是否要确定开始日期记录是否在过去 3 个月内或结束日期记录内。
您还需要一个限制来确定总和(分配百分比)。你想总结什么独特的记录。由于您想对分配百分比求和,然后只选择大于 100 的那些,因此您必须弄清楚要拉出哪些然后求和。
您需要使用 With 语句或创建分阶段提取所需信息的子“表”(查询)来完成此操作。我将介绍子查询语句。
为 Sql-Server 2008 R2 编写
首先选择过去 3 个月内的数据
Select ResourceAssignmentID, ResourceID, [Assigned To], [Allocation %]
From ResourceAssignment
Where [Start Date] >= dateadd(Month,-3,Now)
然后使用此数据对分配百分比求和。(我假设基于2个外键的组合)
Select Query1.ResourceID, Query1.[Assigned To], sum(Query1.[Allocation %]) as Sumofallocation
From
(Select ResourceAssignmentID, ResourceID, [Assigned To], [Allocation %]
From ResourceAssignment
Where [Start Date] >= dateadd(Month,-3,Now)) Query1
Group By Query1.ResourceID, Query1.[Assigned To], sum(Query1.[Allocation %])
您也许可以在 group by 之前添加 Where 语句以过滤出您的 >100 要求,但我只会添加另一个 Select 语句将它们拉到一起
Select * From
(Select Query1.ResourceID, Query1.[Assigned To], sum(Query1.[Allocation %]) as Sumofallocation
From
(Select ResourceAssignmentID, ResourceID, [Assigned To], [Allocation %]
From ResourceAssignment
Where [Start Date] >= dateadd(Month,-3,Now)) Query1
Group By Query1.ResourceID, Query1.[Assigned To], sum(Query1.[Allocation %])
) Query2
Where Query2.Sumofallocation > 100
此外,您似乎正在从事项目管理类型的程序。微软项目不会工作吗?您将能够在您希望的任何时间范围内查看谁被过度分配。如果您有多个项目,您可以将它们合并到一个大的项目文件中并以这种方式查看...
无论如何,我希望这会有所帮助。SQL 可能并不完美,但它应该为您指明一个可行的方向。