paul_vin Ответов: 1

Я хочу обработать условие if или case в столбце join в запросе mysql


select m.Main_Test_Name,sum(datediff(s.job_submit_date,s.job_assign_date))/count(s.Sample_Details_Id) as averagetimetocompleteTest from main_test m inner join sample_details s on m.Main_Test_Id=s.Main_Test_Id group by m.Main_Test_Id;



мой запрос работает нормально (но в некоторых случаях у меня есть дата вставки
job_assign_date
как
'0001-01-01 00:00:00'

то же самое для
job_submit_date '0001-01-01 00:00:00'


но когда эти даты будут
'0001-01-01 00:00:00'
тогда я хочу установить его как null

но это дает мне ошибку

Что я уже пробовал:

Я уже пробовал

как 1)
select m.Main_Test_Name,sum(datediff(s.job_submit_date , case job_submit_date when '0001-01-01 00:00:00' then null else s.job_submit_date,s.job_assign_date))/count(s.Sample_Details_Id) as averagetimetocompleteTest from main_test m inner join sample_details s on m.Main_Test_Id=s.Main_Test_Id group by m.Main_Test_Id;";



2)
select m.Main_Test_Name,sum(datediff(s.job_submit_date,if(s.job_assign_date='0001-01-01 00:00:00',null,s.job_assign_date) s.job_assign_date)/count(s.Sample_Details_Id) as averagetimetocompleteTest from main_test m inner join sample_details s on m.Main_Test_Id=s.Main_Test_Id group by m.Main_Test_Id;

CHill60

"но это дает мне ошибку" ... какая ошибка?
При размещении вопросов, связанных с базами данных, всегда полезно поделиться с нами своей структурой таблиц, некоторыми образцами данных и ожидаемыми результатами(для предоставленных данных)

1 Ответов

Рейтинг:
5

Sandeep1003

использовать

NULLIF


Returns a null value if the two specified expressions are equal. For example, SELECT NULLIF(4,4) AS Same, NULLIF(5,7) AS Different; returns NULL for the first column (4 and 4) because the two input values are the same. The second column returns the first value (5) because the two input values are different.


Syntax


NULLIF ( expression , expression )