martes, 29 de septiembre de 2015

SQL tip: Ordenar por varios criterios dentro de una misma query

Es posible ordenar por diferentes criterios los resultados que devuelve una sola query. Para esto utilizaremos CASE dentro de la claúsula ORDER BY.

La mejor forma es verlo por medio de un ejemplo:

order by CASE WHEN 1=1 THEN mes
                END,
   
                CASE WHEN tipo_cliente = 'Persona_fisica' THEN apellido1
                END,

                CASE WHEN tipo_cliente = 'Persona_fisica' THEN apellido2
                END,

                CASE WHEN tipo_cliente = 'Persona_fisica' THEN nombre
                END,

                CASE WHEN tipo_cliente = 'Persona_juridica' THEN razon_social
                END


En este caso queremos ordenar los registros de la siguiente manera:
Primer criterio, ordenar todos los resultados por mes.
Segundo criterio, ordenar resultados de los clientes que sean persona física por apellidos y nombre.
Tercer criterio, ordenar los resultados de los clientes que sean persona jurídica por razón social.

Un ejemplo sencillo pero ilustrativo. Con CASE se puede poner toda la lógica necesaria para la ordenación dependiendo de nuestras necesidades.

No hay comentarios:

Publicar un comentario