【发布时间】:2010-04-05 04:27:52
【问题描述】:
我正在尝试编写一份报告,该报告将加入一个人、他们的工作以及他们在工作时的小时工资。当日期小于工作日期时,我似乎无法找出加入人员费用的最佳方式。
假设一个人在年初的时候每小时花费 30 美元,然后在 2 月 5 日和 3 月 1 日获得了 10 美元的加薪。
- 01/01/2010 30.00 美元(每小时)
- 02/05/2010 $40.00
- 03/01/2010 $45.00
这个人在几天内投入了几个小时。
- 01/05/2010 10 小时(应为 30 美元/小时)
- 2010 年 1 月 27 日 5 小时(同样 30 美元)
- 2010 年 2 月 10 日 10 小时(每小时 40 美元)
- 03/03/2010 5 小时(每小时 45 美元)
我正在尝试编写一个 SQL 语句来提取小时数、每小时成本和小时*成本。成本是上次输入系统的小时费率,因此成本日期小于工作日期,按成本日期限制 1 排序。
SELECT person.id, person.name, work.hours, person_costs.value,
work.hours * person_costs.value AS value
FROM person
JOIN work ON person.id = work.person_id
JOIN person_costs ON person.id = person_costs.person_id
AND person_costs.date < work.date
WHERE person.id = 1234
ORDER BY work.date ASC
我遇到的问题是,person_costs 没有按日期降序排列。它正在提取与条件匹配的“任何”值(自然按记录位置排序)。如何选择比工作日期更早的第一个 person_cost 值?
谢谢!
【问题讨论】: