
como indicar con valor 0 que no hay registro en una tabla sql?
Publicado por Molitaa (16 intervenciones) el 04/07/2017 18:32:16
Hola,
Estoy obteniendo un reporte de los empleados con la cantidad de incidencias (Falta, Permiso, vacaciones, etc) que se les registraron a partir de una Fecha Desde a Fecha Hasta.
Cuando doy el valor 0 me retorna el numero de empleado con la cantidad de incidencia que se registro, pero si dentro de ese rango no hubo un registro a un empleado no me muestra al empleado.
Lo que quiero es que me muestre al empleado con numero de incidencia cero.
como puedo lograrlo, el código que tengo hasta el momento es:
con esto puedo verlo de la siguiente manera

ahora habilito la linea de
para que me muestre los registros de las Fechas de incidencias mayores a las fechas de inicio de Jornada
y al momento de ejecutar me quita varios registros que son los que quiero que estén en 0 y no que los quite
Por ejemplo con el numero de Operador 450135 el tiene las fechas Iniciales y finales de las incidencias menores a las fechas de inicio de Jornada, entonces en el resultado debería de aparecer el número de empleado y la cantidad de incidencias en 0 pero lo que hace es quitármelo.

Espero me puedan apoyar.
Gracias
Estoy obteniendo un reporte de los empleados con la cantidad de incidencias (Falta, Permiso, vacaciones, etc) que se les registraron a partir de una Fecha Desde a Fecha Hasta.
Cuando doy el valor 0 me retorna el numero de empleado con la cantidad de incidencia que se registro, pero si dentro de ese rango no hubo un registro a un empleado no me muestra al empleado.
Lo que quiero es que me muestre al empleado con numero de incidencia cero.
como puedo lograrlo, el código que tengo hasta el momento es:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
declare @numOperador int, @FechaDesde datetime, @FechaHasta datetime
set @FechaDesde='2017-05-01 00:00:00.000'
set @FechaHasta='2017-06-30 00:00:00.000'
set @numOperador=0
SELECT CC.NumOperador,
--(Nombre + ' ' + ApPaterno + ' ' + ApMaterno) AS Operador,
j.Descripcion,
Incidencias=COALESCE(SUM(DATEDIFF(DAY, Fecha_Ini, Fecha_Fin) + 1), 0)
FROM trkOperadores O
JOIN trkJornada J ON J.cveJornada = O.cveJornada
JOIN CopCalendario CC ON CC.NumOperador = O.NumOperador
LEFT JOIN CopCalendarioIncidencias CPI on CC.idNumOperador=CPI.idNumOperador
WHERE O.cveTipoOperador = 2
AND (CC.NumOperador = @NumOperador OR @NumOperador = 0)
and ((isnull(CPI.Fecha_Ini,0)=0 and isnull(CPI.Fecha_Fin,0)=0)
or (cpi.Fecha_Ini>=@FechaDesde and cpi.Fecha_Fin<=@FechaHasta))
--and (cpi.Fecha_Ini>=Jornada_Ini and cpi.Fecha_Fin>=Jornada_Ini))
GROUP BY CC.NumOperador,(Nombre + ' ' + ApPaterno + ' ' + ApMaterno), j.Descripcion, CC.Jornada_Ini, J.DiasLabores, J.DiasDescanso
con esto puedo verlo de la siguiente manera
ahora habilito la linea de
1
and (cpi.Fecha_Ini>=Jornada_Ini and cpi.Fecha_Fin>=Jornada_Ini)
para que me muestre los registros de las Fechas de incidencias mayores a las fechas de inicio de Jornada
y al momento de ejecutar me quita varios registros que son los que quiero que estén en 0 y no que los quite
Por ejemplo con el numero de Operador 450135 el tiene las fechas Iniciales y finales de las incidencias menores a las fechas de inicio de Jornada, entonces en el resultado debería de aparecer el número de empleado y la cantidad de incidencias en 0 pero lo que hace es quitármelo.
Espero me puedan apoyar.
Gracias
Valora esta pregunta


0