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 DESCCon 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