I have a query like this:
SELECT distinct(A.EMP_ID), C.MAINT_ID
FROM EMPLOYEE_MASTER A
LEFT OUTER JOIN DESIGNATION_MAINTENANCE C ON A.EMP_ID = C.EMP_ID
Which returns the following output.
EMP_ID |MAINT_ID
----------------
15 NULL
16 NULL
17 NULL
18 1
18 2
18 3
19 NULL
20 NULL
21 4
21 5
22 NULL
23 NULL
Now the actual result what I need is
- Get the Max of maint_id for the Emp _id and display only the max record.
For example for Emp_id 18 there are three records. But i need the max one, i.e maint_id =3
So the output that I expected is like
EMP_ID MAINT_ID
------------------
15 NULL
16 NULL
17 NULL
18 3
19 NULL
20 NULL
21 5
22 NULL
23 NULL
What I have tried so far is
SELECT
(A.EMP_ID), C.MAINT_ID
FROM
EMPLOYEE_MASTER A
LEFT OUTER JOIN
DESIGNATION_MAINTENANCE C ON A.EMP_ID = C.EMP_ID
AND C.MAINT_ID = (SELECT TOP(1) MAINT_ID
FROM DESIGNATION_MAINTENANCE
ORDER BY MAINT_ID DESC)
which returns:
EMP_ID MAINT_ID
------------------
15 NULL
16 NULL
17 NULL
18 NULL
19 NULL
20 NULL
21 5
22 NULL
23 NULL
Which is not my expectation. How to do it? Any help appreciated