【发布时间】:2011-12-08 18:34:41
【问题描述】:
我正在开展一个项目,该项目每天记录员工的绩效指标。
records 表每天保存一行员工的生产力;每列包含在该类别中完成的项目计数,加上总班次时间和作为短日期的日期。
metrics 表包含一个生效日期(短日期)和与 records 表中的生产力列相匹配的列,这些列跟踪预期的每小时生产率。
employees 表只包含员工姓名和电话分机。
员工报告可以设置为可变日期范围以显示一段时间内的绩效,GroupLevel(1).GroupOn 也可以通过 VBA 设置(按周、月、季度等创建部分)。
这里的目标是创建一个查询,该查询返回记录表的所有行(稍后将根据打开报告时传递的whereCondition 进行过滤)以及metrics 表的行,即小于或等于records.date 的最高日期。到目前为止,我只能获得metrics 行的 ID(或任何其他单个字段):
SELECT records.*, employees.first, employees.last, employees.ext,
(
SELECT TOP 1 metrics.id
FROM metrics
WHERE metrics.date<=records.date
ORDER BY metrics.date DESC
) AS MetricsID
FROM employees
INNER JOIN records ON employees.id = records.employee
ORDER BY employees.last;
我正在寻找的是一种编写此查询的方法,因此我在每一行中都有所有列 - 当我在 GroupFooter2_Format 期间运行我的计算函数时,这意味着我不必针对每个查询 metrics日期范围内的行。
如果你能告诉我如何编写一个查询,它将自动将records 中的列除以metrics 中的相应列,那么我可以直接填充字段。
【问题讨论】:
标签: sql select inner-join ms-access-2003 jet