0

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

事件日期、员工姓名、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];
4

1 回答 1

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)

每列将汇总适当的休假类型。

于 2013-05-07T17:00:07.260 回答