我有3个查询
SELECT * FROM `admin_sprints`
where CURDATE() < `sprint_start_date` and
CURDATE() <`sprint_end_date` - retuen type as future
SELECT * FROM `admin_sprints`
where CURDATE() > `sprint_start_date` and
CURDATE() >`sprint_end_date` - retuen type as past
SELECT * FROM `admin_sprints`
where CURDATE() between `sprint_start_date` and
`sprint_end_date` - retuen type as current
我试图将其合并为单个查询
所以我尝试了
SELECT
*
FROM
admin_sprints
ORDER BY (CASE
WHEN sprint_start_date` and CURDATE() <`sprint_end_date` THEN future
ELSE admin_sprints` where CURDATE() > `sprint_start_date` and CURDATE() >`sprint_end_date then over
ELSE current
END);
admin_sprints
---------------|------------|-----------------|-----------------------
sprint_id |sprint_name |sprint_start_date| sprint_end_date |
1 Sprint1 2018-11-01 2018-11-13
2 sprint2 2018-11-14 2018-11-23
3 sprint 3 2018-11-24 2018-11-130
预期产量
sprint_id sprint_name type
1 Sprint1 over
2 Sprint2 Active
3 Sprint3 future
我不知道方法是否正确。运气不好,任何帮助将不胜感激
答案 0 :(得分:3)
您需要在CASE..WHEN
子句中使用SELECT
语句来相应地确定type
。试试:
SELECT
*,
CASE WHEN sprint_start_date < CURDATE() AND
sprint_end_date < CURDATE()
THEN 'over'
WHEN CURDATE() BETWEEN sprint_start_date AND
sprint_end_date
THEN 'active'
ELSE 'future'
END AS type
FROM
admin_sprints