Hola erxaca:
Entiendo la idea de lo que intentas hacer, con el CASE-WHEN te estaría colocando primeramente todos los registros con fecha posterior a la actual, pero el detalle está en que al ordenar por el segundo campo lo hace de manera completa, es decir, no puedes indicarle a una ordenación que ordene primero unos registros de cierta manera y el resto de otra manera... Lo único que se me ocurre es que hagas algo como esto:
Código MySQL:
Ver original+------+------------+
| id | fecha |
+------+------------+
| 1 | 2013-12-21 |
| 2 | 2013-02-21 |
| 3 | 2013-02-20 |
| 4 | 2013-03-02 |
| 5 | 2013-01-17 |
| 6 | 2013-02-19 |
+------+------------+
-> ) T1
-> ) T2;
+------+------------+
| temp | fecha |
+------+------------+
| 0 | 2013-02-20 |
| 0 | 2013-02-21 |
| 0 | 2013-03-02 |
| 0 | 2013-12-21 |
| 1 | 2013-02-19 |
| 1 | 2013-01-17 |
+------+------------+
tengo dudas con respecto a la fecha (21/12/2013), creo que te equivocaste al hacer tu ordenación, porque esta fecha, según yo debería ser la última de la primer sección...el campo temp con los valores de 0 y 1 en realidad están de más, los puse para que lo asociaras con lo que estás intentando hacer... observa que de esta manera sí puedes indicar en el ORDER BY dos comportamientos distintos para casa sección:
Código:
ORDER BY fecha --> de manera ascendente para la primer sección
ORDER BY fecha DESC --> de manera descendente para la segunda sección
Dale un vistazo para ver si te puede servir.
Saludos
Leo.