MS Access Query Subselect或Union with Left Join

时间:2013-05-07 16:43:00

标签: ms-access

我是一名Access noob,正在使用一个跟踪员工受伤和错过时间的数据库。我有一个查询从两个表中提取数据:一个是员工受伤而另一个是错过时间。大多数伤病没有任何相关的错过时间,并且有两种类型的错过时间。目前,查询为每种类型的错过时间返回单独的行。我想修改此查询,以便每个员工只有一行,有两个单独的列,用于不同类型的错过时间。我的专栏标题将来自:

事件发生日期,员工姓名,Leave_Type,天数

对此:

事件发生日期,员工姓名,休假日,轻工日

查询如下。两种假期是" Off"和" TTA"。有关如何做到这一点的任何建议吗?

SELECT 
Injuries.[Date of Incident], 
Injuries.[Employee's name], 
Leave.Leave_Type, 
Sum(IIf(Leave.Last Is Null,DateDiff("d",Leave.First,Date())+1, DateDiff("d",Leave.First,Leave.Last)+1)) AS Days
FROM 
Injuries LEFT JOIN Leave ON Injuries.ID = Leave.ID
WHERE 
Injuries.[OSHA Recordable?]<0 
and Injuries.[Date of Incident] between [Forms]![OSHA Recordable Claims Form]![From] and [Forms]![OSHA Recordable Claims Form]![To]
GROUP BY 
Injuries.[Date of Incident], 
Injuries.[Employee's name], 
Leave.Leave_Type
ORDER BY 
Injuries.[Date of Incident];

1 个答案:

答案 0 :(得分:0)

有两种选择:

您可以使用Leave-Type作为列标题

进行交叉表查询

或者您可以在两列中的每一列中添加公式

OFF_leave:Iif (leave_type="Off",<calc the amount here>,0)

TTA_Leave:Iif (leave_type="TTA",<calc the amount here>,0)

每列将总结适当的假期类型。