表task_order (id,status,start_time,time_end,verify_time,report_area_time,update_time,create_time)状态(1、未开始;2、开始;3、进行中;4、已完成;5、已评价;6、已核准;7、已结束;-1、已取消;-2、已拒绝)
项目排序要求:1、当任务状态为2,且任务计划开始时间小于等于当前时间
2、当任务状态为3,且任务计划结束时时间小于等于当前时间
3、当任务状态为1时,按任务计划开始时间升序
4、当任务状态为2时,按任务计划开始时间升序
5、当任务状态为3时、按任务上报进度时间降序
6、当任务状态为4时,按任务结束时间降序
7、当任务状态为5时,按任务结束时间降序
8、当任务状态为6时,按任务结束时间降序
9、当任务状态为7时,按任务结束时间降序
10、当任务状态为-1时,按任务记录更新时间降序
11、当任务状态为-2时,按创建任务时间降序
SELECT o.*,(
case
when (o.status=2 and o.start_time <= UNIX_TIMESTAMP(CURRENT_DATE())) THEN '-1'
when (o.status=2 and o.start_time > UNIX_TIMESTAMP(CURRENT_DATE())) THEN '2'
when (o.status=3 and o.end_time <= UNIX_TIMESTAMP(CURRENT_DATE())) THEN '-2'
when (o.status=3 and o.end_time > UNIX_TIMESTAMP(CURRENT_DATE())) THEN '3'
when o.status=1 THEN '1'
when o.status=4 THEN '4'
when o.status=5 THEN '5'
when o.status=6 THEN '6'
when o.status=7 THEN '7'
when o.status=-1 THEN '8'
when o.status=-2 THEN '9'
END) as new_status
from task_order o where f.pepole_id =75 ORDER BY new_status ASC,
case when o.status=1 THEN o.start_time END asc,
case when o.status=2 THEN o.start_time END asc,
case when o.status=3 THEN o.report_area_time END desc,
case when o.status=4 THEN o.time_end END desc,
case when o.status=5 THEN o.time_end END desc,
case when o.status=6 THEN o.time_end END desc,
case when o.status=7 THEN o.verify_time END desc,
case when o.status=-1 THEN o.update_time END desc,
case when o.status=-2 THEN o.create_time END desc;