Estoy intentando ordenar por campo y ordenar por instrucción Case When Than. si el caso es ns, la fecha debe ser ASC y la hora debe ser ASC, si el caso es pp, la fecha debe ser ASC y la hora debe ser ASC, si el caso está hecho, la fecha debe ser DESC y la hora debe ser ASC.

Ns no se inicia, pp se pospone, se hace, se hace,

Mi código:

select * from matches
where tournament_id = 12
order by FIELD(matches.status_key, 'ns', 'done', 'pp'),
CASE WHEN matches.status_key = 'ns' THEN ('matches.date ASC, matches.time ASC') END,
CASE WHEN matches.status_key = 'pp' THEN ('matches.date ASC, matches.time ASC') END,
CASE WHEN matches.status_key = 'done' THEN ('matches.date DESC, matches.time ASC') END;

Supongo que este es un enfoque incorrecto, necesito orientación, consejo y ayuda para resolver el problema.

Gracias

0
user7187569 24 jul. 2020 a las 16:21

1 respuesta

La mejor respuesta

Creo que debería hacerlo:

order by 
    field(status_key, 'ns', 'done', 'pp'),
    case when status_key in ('ns', 'pp') then date,
    case when status_key = 'done'        then date desc,
    time
1
GMB 24 jul. 2020 a las 13:28