SQL Server - como indicar con valor 0 que no hay registro en una tabla sql?

 
Vista:
sin imagen de perfil

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:
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


result

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.


450135


Espero me puedan apoyar.
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

como indicar con valor 0 que no hay registro en una tabla sql?

Publicado por Isaias (4558 intervenciones) el 04/07/2017 18:54:58
Alguien dijo, "dadme un soporte y movere al mundo", en otras palabras, lo que necesitas para llegar al objetivo que buscas, es una tabla CALENDARIO, donde tengas los dias habiles y los no laborables, de esa forma, podrias obtener todos los dias en que algun empleado NO REGISTRO su entrada (o salida) siendo un dia habil.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

como indicar con valor 0 que no hay registro en una tabla sql?

Publicado por Molitaa (16 intervenciones) el 04/07/2017 19:00:53
gracias por responder Isaias
Tengo las tabla de Copcalendario en donde registro el inicio de Jornada y en la tabla CopCalendarioIncidencias (Las faltas, permisos, descanso)

Le comparto la imagen con un empleado.

tablas

Lo que quiero hacer es no tomar en cuenta los descansos que están registrados antes de la fecha registrada de la Jornada Inicial que esta en copcalendario y en mi resultado mostrar Incidencia 0 en lugar de que me deje de mostrar el registro.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

como indicar con valor 0 que no hay registro en una tabla sql?

Publicado por Isaias (4558 intervenciones) el 04/07/2017 20:04:36
Entonces, si ya tienes tu "soporte" (calendario y permisos), solo tendrias que obtener aquellos dias que NO tienes registrados de tus empleados, esas, serian tus incidencias.

Checa por la instruccion NOT EXISTS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar