要显示天数(以天数为单位,但仅当状态为“进行中”时才显示的查询,对于状态为“完成”的查询,只需要显示“完成”的值]
当前MySQL查询
SELECT
id,
due_date,
process_1,
process_2,
CASE WHEN FLOOR((IF(process_1= 'Done', 1, 0) + IF(process_2= 'Done', 1, 0))/2 * 100) = 100 THEN 'Done'
ELSE 'Ongoing' END AS status,
DATEDIFF(due_date, CURDATE())) AS days_left
FROM table1
下面是我的结果
+---------------------------------------------------------------+
| id | due_date | process_1 | process_2 | status | days_left |
+ ----------------------------+-----------+---------+-----------+
| 1 | 10/01/2020 | ongoing | ongoing | ongoing | 3 |
| 2 | 10/01/2020 | done | done | done | 3 |
+---------------------------------------------------------------+
我想要的结果
+---------------------------------------------------------------+
| id | due_date | process_1 | process_2 | status | days_left |
+ ----------------------------+-----------+---------+-----------+
| 1 | 10/01/2020 | ongoing | ongoing | ongoing | 3 |
| 2 | 10/01/2020 | done | done | done | done |
+---------------------------------------------------------------+
在查询中,您具有用于计算status
的方程式。您可以再次使用相同的方程式指定days_left
,有点像:
SELECT
id,
due_date,
process_1,
process_2,
CASE WHEN
FLOOR((IF(process_1= 'Done', 1, 0) + IF(process_2= 'Done', 1, 0))/2 * 100) = 100
THEN 'Done'
ELSE 'Ongoing' END AS status
CASE WHEN
FLOOR((IF(process_1= 'Done', 1, 0) + IF(process_2= 'Done', 1, 0))/2 * 100) = 100
THEN 'Done'
ELSE DATEDIFF(due_date, CURDATE())) END AS days_left
FROM table1