可用性表是
try {
Object x = hahaList.get(0).newInstance();
} catch (InstantiationException | IllegalAccessException e) {
throw new RuntimeException(e);
}
我一直在尝试以下查询的各种版本。
| avail_id | emp_id | effective_date | Friday | Saturday | Sunday |
| 0 | 15 | 2016-07-14 | Yes | Yes | No |
| 1 | 15 | 2016-06-14 | Yes | Yes | Yes |
| 2 | 12 | 2016-07-01 | Yes | No | No |
| 3 | 12 | 2016-07-14 | Yes | Yes | Yes |
| 4 | 17 | 2016-05-14 | No | Yes | Yes |
| 5 | 17 | 2016-06-14 | Yes | Yes | Yes |
| 6 | 17 | 2016-07-14 | Yes | No | No |
我的目标是为每位员工选择具有最新可用性的行 - 并最终能够选择在给定日期适用的可用性*。不幸的是,我得到的结果将是可用性表中每个员工的第一行中的值混合。例如,它将为员工15提供2016-07-14的生效日期,但会给出与2016-06-14生效日期相对应的其他列值。
*员工可以在3周内开始上学时提交新的可用性,但在今天运行报告时,我希望今天适用,而不是3周。此外,没有适用于所有员工的新可用性的设定日期。
答案 0 :(得分:0)
可以在max
中使用in子句SELECT
Availability.emp_id
, Availability.friday
, Availability.saturday
, Availability.sunday
, Employees.emp_fname
, Employees.emp_lname
FROM Availability
LEFT JOIN Employees ON Availability.emp_id = Employees.emp_id
WHERE Employees.active='Yes'
AND (Availability.emp_id, Availability.effective_date ) in
( select Availability.emp_id , max(Availability.effective_date)
FROM Availability group by Availability.emp_id )
ORDER BY
Employees.position_id
, Employees.emp_lname
, Employees.emp_fname
, Availability.effective_date DESC