简体   繁体   中英

Select max date or null date from same table MySQL

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM