miércoles, 10 de febrero de 2016

CASE en SQL

Buenos días queridos lectores, el día de hoy vamos a continuar con la programación TRANSACT-SQL y veremos el uso de CASE. Con frecuencia es necesario que existan más de dos posibles acciones en una determinada condición, para esto se usan las estructuras de condición múltiple. La estrucutra CASE evalúa una expresión que podrá tomar N valores distintos, según se elija uno de estos valores se tomarán N posibles acciones. Pero pasemos al ejemplo que es como se aprende

Sintaxis:
CASE <columna>
                WHEN expresión THEN expresión_resultado
                […n]
                [
                               ELSE expresion_falsa
                ]

END

Donde:
  • Columna: Es el nombre de la columna que se va a comparar, también se pueden usar funciones SQL
  • WHEN: Especifica las expresiones que se van a buscar según la condición
  • THEN: Especifica las opciones resultantes de una opción
  • END: Especifica la finalización de la estructura
  • Una clausula AS opcional que define un alias de la función CASE

Ejemplo 1:
Script que permita mostrar el tipo de servidor según el correo electrónico registrado por cada pasajero utilizando CASE



SELECT *, CASE WHEN EMAIL LIKE '%HOTMAIL%' THEN 'HOTMAIL'
                           WHEN EMAIL LIKE '%GMAIL%' THEN 'GMAIL'
                    END AS [SERVIDOR DE CORREO]
       FROM PASAJERO
GO

En el script se muestran todas las columnas de la tabla PASAJERO y además se evalúa el tipo de servidor de email del pasajero para el caso de Hotmail se condiciona como WHEN EMAIL LIKE 'HOTMAIL', si algún valor coincide con el caso entonces mostrará el mensaje HOTMAIL, de igual manera para el servido de gmail con WHEN EMAIL LIKE '%GMAIL%' THEN 'GMAIL', después de la palabra END de la estructura CASE se puede asignar el nombre de la columna

La siguiente imagen muestra el resultado de la consulta:


Ejemplo 2
Script que permita mostrar la fecha en texto registrada en la tabla RESERVA de la siguiente forma, si la fecha fuera 2011-10-01 entonces deberá adicionar una columna a la consulta para mostrar 01 Octubre 2011

SELECT *,
CAST (DAY(FECHA) AS CHAR(2))+
       CASE MONTH(FECHA)
                           WHEN 1 THEN ' ENERO '
                           WHEN 2 THEN ' FEBRERO '
                           WHEN 3 THEN ' MARZO '
                           WHEN 4 THEN ' ABRIL '
                           WHEN 5 THEN ' MAYO '
                           WHEN 6 THEN ' JUNIO '
                           WHEN 7 THEN ' JULIO '
                           WHEN 8 THEN ' AGOSTO '
                           WHEN 9 THEN ' SEPTIEMBRE '
                           WHEN 10 THEN ' OCTUBRE '
                           WHEN 11 THEN ' NOVIEMBRE '
                           WHEN 12 THEN ' DICIEMBRE '
                    END
             +CAST(YEAR(FECHA) AS CHAR(4)) AS [FECHA]
       FROM RESERVA

GO

La siguiente imagen muestra el resultado de la consulta:


Ejemplo 3
Script que permita mostrar el número total de pasajeros y el mensaje NO CUENTA solo a los países cuyo número de pasajeros sea cero



SELECT       PAI.PAIS,
                           COUNT(PAS.IDPASAJERO) AS [TOTAL PASAJEROS],
                           CASE
                                  WHEN COUNT (PAS.IDPASAJERO)=0 THEN 'NO CUENTA'
                                  ELSE ''
                           END AS [MENSAJE]
                    FROM PAIS PAI
                    LEFT JOIN PASAJERO PAS ON PAI.IDPAIS=PAS.IDPAIS
                    GROUP BY PAI.PAIS
GO

La imagen siguiente muestra el resultado de la consulta:


Hasta aquí el post queridos lectores, espero que haya sido de su agrado y de su utilidad, espero compartan, comenten, den +1 o clic en algún anuncio que les interese.

Saludos!!


Banderas de Visitantes

Flag Counter