我正在开发一个access数据库,用于将任务分配给人员并跟踪任务状态和工作量。可以将单个用户标识分配给与特定任务关联的多个字段之一。在本例中,任务表具有“techreviewerid”“designerid”“techreviewerworkload”和“designerworkload”字段
我希望一个查询为每个人返回一行,两个摘要列合计分配给他们的所有工作负载。因此,如果我是id1,我希望第3列返回所有任务中“techreviewerid=1”的“techreviewerworkload”的和,第4列返回所有任务中“designerworkload”的和,其中“designerid=1”
我已经成功地编写了两个独立的查询来实现这一点:
SELECT MESPersonnel.MESID, MESPersonnel.PersonnelName,
IIF(SUM(DesignerTask.DesignerWorkload) IS NULL, 0, SUM(DesignerTask.DesignerWorkload)) AS
TotalDesignerWorkload
FROM
(MESPersonnel LEFT OUTER JOIN Task AS DesignerTask ON (MESPersonnel.MESID =
DesignerTask.DesignerID
AND DesignerTask.DueDate < CDATE('2020-07-30') AND DesignerTask.DueDate > CDATE ('2020-05-01')))
WHERE MESPersonnel.PositionID = 1
GROUP BY MESPersonnel.MESID, MESPersonnel.PersonnelName;
此查询提供下表:
MESID PersonnelName TotalDesignerWorkload
1 John Doe 40
2 Dohn Joe 20
我可以用“tech reviewer”术语替换“designer”术语的所有示例,从而创建一个几乎相同的查询。
我要找的是这样一张table:
MESID PersonnelName TotalDesignerWorkload TotalReviewerWorkload
1 John Doe 40 10
2 Dohn Joe 20 20
我试图通过多个外部连接将这两个结合起来,结果导致了非常不准确的和。我知道如何解决不同表中的项的问题,但是当我使用同一表中的两个项时,我不知道如何解决。在我的查询中是否有某种access支持的条件和?
编辑:样例原始数据
Task Table
TaskID DesignerID TechReviewerID DesignerWorkload TechReviewerWorkload DueDate
1 1 2 40 20 06-20-2020
2 2 1 20 10 06-20-2020
MESPersonnel Table
MESID PersonnelName
1 John Doe
2 Dohn Joe
1条答案
按热度按时间i5desfxk1#
考虑:
查询1:taskunion
将数据重新排列为规范化结构
查询2:
另一种方法是对任务表进行两个简单的、经过过滤的聚合查询,然后将这两个查询连接到mespersonnel。以下为一体式陈述: