SELECT e.employee_number
,e.nme
,l.days
FROM employee e
, leave_allocation l
,(SELECT employee_id
,MAX(DATE) date
FROM leave_allocation
GROUP BY employee_id) m
WHERE l.employee_id = e.employee_id
AND l.employee_id = m.employee_id
AND l.date = m.date
如果可以有多个具有相同employee_number和日期的行,则需要求和。
SELECT e.employee_number
,e.nme
,sum(l.days)
FROM employee e
, leave_allocation l
,(SELECT employee_id
,MAX(DATE) date
FROM leave_allocation
GROUP BY employee_id) m
WHERE l.employee_id = e.employee_id
AND l.employee_id = m.employee_id
AND l.date = m.date
GROUP BY e.employee_number
,e.nme
来源
2012-08-30 16:45:57
dcp
注意,这会产生重复,如果员工ID和日期的组合不是leave_allocation独特。 –
@ Eric Petroelje - 是的,但我的假设是他们,否则,拥有2行具有相同员工ID和日期的行会有什么意义?无论如何,我提出了一个替代方案,以防万一有多行,请参阅编辑答案。 – dcp