I would to select the max date or null but display twice for the Company Code.
The original table is
Employee code Company Code resignation date
001 A 1/2/2013
001 B 30/12/2014
002 B 10/10/2000
003 A 1/12/2014
003 c NULL
should be show
EMPLOYEE_CODE COMPANY_CODE RESIGNATION_DATE
001 B 30/12/2014
002 B 10/10/2000
003 C NULL
but I only want to show one record per EMPLOYEE_CODE
EMPLOYEE_CODE COMPANY_CODE RESIGNATION_DATE
001 A 1/2/2013
001 B 30/12/2014
002 B 10/10/2000
003 C
this is my query
SELECT EMPLOYEE_CODE , COMPANY_CODE, RESIGNATION_DATE
FROM MT_EMPLOYEE_CONTRACT WHERE RESIGNATION_DATE IS NULL
UNION
SELECT EMPLOYEE_CODE , COMPANY_CODE, MAX(RESIGNATION_DATE) AS RESIGNATION_DATE
FROM MT_EMPLOYEE_CONTRACT WHERE WHERE EMPLOYEE_CODE NOT IN
(SELECT EMPLOYEE_CODE FROM MT_EMPLOYEE_CONTRACT WHERE RESIGNATION_DATE IS NULL)
GROUP BY EMPLOYEE_CODE;
Can Anyone find out what is the problem? Thank you
UPDATED
Please try the corrected version:
SELECT
MT_EMPLOYEE_CONTRACT.EMPLOYEE_CODE ,
MT_EMPLOYEE_CONTRACT.COMPANY_CODE,
MT_EMPLOYEE_CONTRACT.RESIGNATION_DATE
FROM
MT_EMPLOYEE_CONTRACT
INNER JOIN
(
SELECT
A.EMPLOYEE_CODE ,
MAX(A.RESIGNATION_DATE) AS MAX_RESIGNATION_DATE
FROM
MT_EMPLOYEE_CONTRACT AS A
GROUP BY
A.EMPLOYEE_CODE
) AS B
ON MT_EMPLOYEE_CONTRACT.EMPLOYEE_CODE = B.EMPLOYEE_CODE
AND MT_EMPLOYEE_CONTRACT.RESIGNATION_DATE = B.MAX_RESIGNATION_DATE;
WHERE
NOT ISNULL(MT_EMPLOYEE_CONTRACT.RESIGNATION_DATE)
UNION
SELECT
MT_EMPLOYEE_CONTRACT.EMPLOYEE_CODE ,
MT_EMPLOYEE_CONTRACT.COMPANY_CODE,
MT_EMPLOYEE_CONTRACT.RESIGNATION_DATE
FROM
MT_EMPLOYEE_CONTRACT
WHERE
ISNULL(MT_EMPLOYEE_CONTRACT.RESIGNATION_DATE)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.