我有这样的查询:获取不同记录的最大值
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
它返回下面的输出。
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
现在实际结果我需要的是
- 获取最大maint_id为的Emp _id,并仅显示最高纪录。
例如Emp_id 18有三条记录。但我需要的最大一个,即maint_id = 3
所以,我预计,输出类似
EMP_ID MAINT_ID
------------------
15 NULL
16 NULL
17 NULL
18 3
19 NULL
20 NULL
21 5
22 NULL
23 NULL
我已经试过到目前为止
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)
返回:
EMP_ID MAINT_ID
------------------
15 NULL
16 NULL
17 NULL
18 NULL
19 NULL
20 NULL
21 5
22 NULL
23 NULL
这不是我的期望。怎么做?任何帮助表示赞赏
提供给我们SQL小提琴。 –
这不就是'A.EMP_ID,MAX(C.MAINT_ID)FROM ... GROUP BY EMP_ID'吗? –
[如何获取基于最大日期的不同记录?]可能的重复(http://stackoverflow.com/questions/23336663/how-to-get-the-distinct-records-based-on-maximum-date) –