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