martes, 19 de mayo de 2015

Ejercicios con IF y Funciones en SQL Server - 1 de 2



Saludos Gente! En esta oportunidad compartiré 6 ejercicios, en donde ejemplificaremos el uso de IF y las funciones antes vistas. Para ello debes tener la base de datos Hospital y los registros. Si no tienes la base de datos, puedes descargarlo desde el indice o desde los siguientes enlaces: DESCARGAR BD HOSPITAL.  -  DESCARGAR REGISTROS DE BD HOSPITAL

Bien, manos a la obra.

1. Mostrar una lista de los empleados con el siguiente texto. Si el empleado no tiene nombre o la consulta devuelve null poner el texto de EMPLEADO SIN NOMBRE.

SELECT ISNULL('EL SEÑOR ' + CAST(APELLIDO AS NVARCHAR(15))
+ ' CON CARGO DE '
+ CAST(OFICIO AS NVARCHAR(15))
+ ' SE DIÓ DE ALTA EL '
+ CAST(DAY(FECHA_ALT) AS CHAR(2)) + ' DE '
+ CAST(DATENAME(MONTH,FECHA_ALT) AS NVARCHAR(14)) + ' DE '
+ CAST(YEAR(FECHA_ALT) AS CHAR(4)),'EMPLEADO SIN NOMBRE') AS
[DATOS EMPLEADOS]
FROM EMP ORDER BY FECHA_ALT



2. Modificación del ejercicio anterior, incluir también la diferencia de años que lleva en la empresa el empleado desde la fecha actual.

SELECT ISNULL('EL SEÑOR ' + LTRIM(CAST(APELLIDO AS
NVARCHAR(15)))
+ ' CON CARGO DE '
+ LTRIM(CAST(OFICIO AS NVARCHAR(15)))
+ ' SE DIÓ DE ALTA EL '
+ CAST(DAY(FECHA_ALT) AS CHAR(2)) + ' DE '
+ LTRIM(CAST(DATENAME(MONTH,FECHA_ALT) AS NVARCHAR(15)))
+ ' DE '
+ CAST(YEAR(FECHA_ALT) AS CHAR(4))
+ ' Y LLEVA EN LA EMPRESA '
+ LTRIM(CAST(DATEDIFF(YYYY,FECHA_ALT,GETDATE()) AS NVARCHAR(5)))
+ ' AÑOS','EMPLEADO SIN NOMBRE')
AS [DATOS EMPLEADOS]
FROM EMP ORDER BY FECHA_ALT



3. Subir el sueldo en 5000 pts a los empleados de la plantilla del hospital La Paz en caso de que la suma de sus salarios no supere el millon de pesetas, en caso contrario bajar el sueldo en 5000 pts.

DECLARE @SUMASAL INT
SELECT @SUMASAL = SUM(SALARIO)
FROM PLANTILLA AS P
INNER JOIN HOSPITAL AS H
ON P.HOSPITAL_COD = H.HOSPITAL_COD
WHERE H.NOMBRE = 'LA PAZ'
PRINT @SUMASAL
IF (@SUMASAL) < 1000000
BEGIN
--SUBIMOS EL SUELDO
UPDATE PLANTILLA SET SALARIO = SALARIO + 5000
FROM PLANTILLA AS P
INNER JOIN HOSPITAL AS H
ON P.HOSPITAL_COD = H.HOSPITAL_COD
WHERE H.NOMBRE = 'LA PAZ'
--NOTIFICAMOS LA SUBIDA
SELECT 'AL EMPLEADO DEL HOSPITAL '
+ H.NOMBRE
+ ', '
+ P.APELLIDO
+ ' CON FUNCIÓN DE '
+ P.FUNCION
+ ', SE LE HA SUBIDO EL SUELDO EN 5000 PTS'
FROM PLANTILLA AS P
INNER JOIN HOSPITAL AS H
ON P.HOSPITAL_COD = H.HOSPITAL_COD
WHERE H.NOMBRE = 'LA PAZ'
END
ELSE
BEGIN
--BAJAMOS EL SUELDO
UPDATE PLANTILLA SET SALARIO = SALARIO - 5000
FROM PLANTILLA AS P
INNER JOIN HOSPITAL AS H
ON P.HOSPITAL_COD = H.HOSPITAL_COD
WHERE H.NOMBRE = 'LA PAZ'
--NOTIFICAMOS LA BAJADA
SELECT 'AL EMPLEADO DEL HOSPITAL '
+ H.NOMBRE
+ ', '
+ P.APELLIDO
+ ' CON FUNCIÓN DE '
+ P.FUNCION
+ ', SE LE HA REDUCIDO EL SUELDO EN 5000 PTS'
FROM PLANTILLA AS P
INNER JOIN HOSPITAL AS H
ON P.HOSPITAL_COD = H.HOSPITAL_COD
WHERE H.NOMBRE = 'LA PAZ'
END


Espero haber ayudado en algo. Hasta la próxima oportunidad!








No hay comentarios:

Publicar un comentario

       
free counters

Páginas vistas en total según Google