[英]How do I return a single record using max function when a single employee-ID has several date values and Need Only Latest Date
We have Employees that will have several BEG_DATE returns and we only need the record that has the latest date.我们的员工将有多个 BEG_DATE 返回,我们只需要具有最新日期的记录。 I can use the MAX to return that date when I apply the second query - but how can I use it on this query below?
当我应用第二个查询时,我可以使用 MAX 返回该日期 - 但是如何在下面的这个查询中使用它?
SELECT REPLACE(EMPLOYEE.EMPLOYEE , ',', '') AS EMPLOYEE_ID, A_VALUE, DB.EMPLOYEE.EMP_STATUS, DB.HRHISTORY.BEG_DATE
FROM DB.PERSHST
INNER JOIN WDWASIS ON WDWASIS.FILENAME = 'LEAVE_TYPE_NAME'
AND PERSHST.REASON_01 = WDWASIS.ALPHA_DEF2
AND PERSHST.REASON_02 = WDWASIS.ALPHA_DEF3
INNER JOIN DB.EMPLOYEE ON DB.PERSHST.EMPLOYEE = DB.EMPLOYEE.EMPLOYEE
INNER JOIN DB.HRHISTORY ON DB.HRHISTORY.EMPLOYEE = DB.EMPLOYEE.EMPLOYEE AND DB.HRHISTORY.COMPANY = DB.EMPLOYEE.COMPANY AND DB.HRHISTORY.FLD_NBR = 20
WHERE DB.EMPLOYEE.EMP_STATUS LIKE 'L%' AND DB.HRHISTORY.A_VALUE LIKE 'L%'
This query works of course when I have a single employee - but how can I feed this into the query above?当我有一个员工时,这个查询当然可以工作 - 但是我怎样才能将它输入到上面的查询中呢?
SELECT DB.HRHISTORY.EMPLOYEE, MAX(DB.HRHISTORY.BEG_DATE)
FROM DB.HRHISTORY
WHERE DB.HRHISTORY.EMPLOYEE ='0'
GROUP BY DB.HRHISTORY.EMPLOYEE
Create a table with the max(date) per employee and join to it on employeeId and date.创建一个包含每个员工的 max(date) 的表,并在 employeeId 和 date 上加入它。 Or, something like this...
或者,像这样的东西......
with emp_max_date as
(
SELECT DB.HRHISTORY.EMPLOYEE as employee_id, MAX(DB.HRHISTORY.BEG_DATE) as recent_date
FROM DB.HRHISTORY
GROUP BY DB.HRHISTORY.EMPLOYEE
)
SELECT REPLACE(EMPLOYEE.EMPLOYEE , ',', '') AS EMPLOYEE_ID, A_VALUE, DB.EMPLOYEE.EMP_STATUS, DB.HRHISTORY.BEG_DATE
FROM DB.PERSHST
INNER JOIN WDWASIS ON WDWASIS.FILENAME = 'LEAVE_TYPE_NAME'
AND PERSHST.REASON_01 = WDWASIS.ALPHA_DEF2
AND PERSHST.REASON_02 = WDWASIS.ALPHA_DEF3
INNER JOIN DB.EMPLOYEE ON DB.PERSHST.EMPLOYEE = DB.EMPLOYEE.EMPLOYEE
INNER JOIN DB.HRHISTORY ON DB.HRHISTORY.EMPLOYEE = DB.EMPLOYEE.EMPLOYEE AND DB.HRHISTORY.COMPANY = DB.EMPLOYEE.COMPANY AND DB.HRHISTORY.FLD_NBR = 20
join emp_max_date eb on eb.employee_id = db.employee.employee and eb.recent_date = db.hrhistory.beg_date
WHERE DB.EMPLOYEE.EMP_STATUS LIKE 'L%' AND DB.HRHISTORY.A_VALUE LIKE 'L%'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.