La verdad es que yo nunca he utilizado el CASE dentro de un ORDER BY. Pero hoy aprendí a hacerlo :) Tal vez me sirva más adelante. Aun no he pensado en el beneficio que pueda sacar de esta característica.
Es sencillo, voy a dejar dos ejemplos. Por si acaso, cogí la primer tabla que vi cuando abrí mi base de datos y la adapté para dicho ejemplo. Todo con fines académicos, no lo veo para implementarlo en la vida real, no este ejemplo, jeje. :)
(Probado en Microsoft SQL Server 2008)
Con parámetros.
Le mando la columna con la cual se ordenará y si se ordenará de manera ascendente o descendente.
DECLARE @columna varchar(50)
SET @columna = 'tipo_registro'
DECLARE @orden varchar(4)
SET @orden = 'ASC'
DECLARE @mix varchar(55)
SET @mix = @columna + ':' + @orden
SELECT * FROM com.Contrato WHERE cod_cliente in (29,30)
ORDER BY
CASE
WHEN (@mix = 'tipo_registro:ASC')
THEN tipo_registro
END ASC,
CASE
WHEN (@mix = 'tipo_registro:DESC')
THEN tipo_registro
END DESC
Con condición. Ordenará por cierta columna de acuerdo a una condicionante.
SELECT * FROM com.Contrato WHERE cod_cliente in (29,30) ORDER BY CASE WHEN cod_cliente=29 THEN tipo_registro END, CASE WHEN cod_cliente=30 THEN nro_contrato END HaPPy CoDiNg =)
No comments:
Post a Comment