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!!
No hay comentarios.:
Publicar un comentario