簡體   English   中英

MySQL選擇最大日期或空日期

[英]MySQL select max date or null date

我想選擇最大日期或null但它顯示錯誤消息。

錯誤:SQLCODE = -104,SQLSTATE = 42601,SQLERRMC = IS;,MAXE時的情況(日期; CONCAT,DRIVER = 3.64.114

原來的表是

Employee code           resignation date
001                     1/2/2013
001                     1/5/2014
001                     null
002                     10/10/2000

應該顯示

EMPLOYEE_CODE           RESIGNATION_DATE
001                     null
002                     10/10/2000

這是我的疑問

SELECT EMPLOYEE_CODE, 
       CASE 
           WHEN MAX(RESIGNATION_DATE IS NULL)= 0 
           THEN MAX(RESIGNATION_DATE) 
       END AS DATE
FROM MT_EMPLOYEE_CONTRACT
GROUP BY EMPLOYEE_CODE;

任何人都可以找出問題所在嗎? 謝謝

任何人都可以找出問題所在嗎?

在這種情況下:

MAX(RESIGNATION_DATE IS NULL)= 0

你正在比較MAX(NULL)=0因為RESIGNATION_DATE IS NULL

您的查詢應該是:

select emp_code, res_date /* first select null emp_code*/
From Table_name
where res_date IS NULL group by emp_code
UNION 
select emp_code, MAX(res_date ) /* select max from non - null emp_code*/
From Table_name
where emp_code NOT IN 
     (select emp_code From Table_name 
      where res_date IS NULL) 
group by emp_code

編輯

select DISTINCT emp_code, res_date /* first select null emp_code*/
From Table_name
where res_date IS NULL 
UNION 
select emp_code, MAX(res_date ) /* select max from non - null emp_code*/
From Table_name
where emp_code NOT IN 
     (select emp_code From Table_name 
      where res_date IS NULL) 
group by emp_code 

嘗試使用NULLIFIFNULL函數的組合。

SELECT EMPLOYEE_CODE, NULLIF(MAX(IFNULL(RESIGNATION_DATE,0)),0)
FROM MT_EMPLOYEE_CONTRACT
GROUP BY EMPLOYEE_CODE;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM