SQL Server - Como asignar un valor a una variable en sql ?

 
Vista:
sin imagen de perfil

Como asignar un valor a una variable en sql ?

Publicado por Molitaa (16 intervenciones) el 17/07/2017 17:30:51
Hola espero me puedan apoyar, les comparto el siguiente código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Declare @NumOperador int, @FechaDesde datetime, @FechaHasta datetime
set @FechaDesde='2017-07-03 00:00:00.000'
set @FechaHasta='2017-07-12 00:00:00.000'
set @NumOperador=452127
IF OBJECT_ID('tempdb..#tmpDescansos') Is Not Null DROP TABLE #tmpDescansos;
 
;WITH FechasDescansos AS
(
SELECT DISTINCT CC.NumOperador,
               CONVERT(DATE,X.Fecha) FechaDescanso
			   --case when (X.Fecha) =1 then 8  end FechaDescanso
FROM dbo.trfDespacho D
INNER JOIN CopCalendario CC
ON CC.NumOperador = D.NumOperador
INNER JOIN trkJornada J on j.cveJornada=cc.TipoJornada
CROSS APPLY (VALUES
                  (D.FechaSalida),
                  (D.FechaLlegada)
                ) x(Fecha)
WHERE (CC.NumOperador = @NumOperador OR @NumOperador = 0)
    AND FechaSalida BETWEEN @FechaDesde AND (@FechaHasta+1)
	and isnull(FechaSalida,0) >=@FechaDesde+j.DiasLabores and  isnull(FechaSalida,0)<=@FechaDesde+j.DiasLabores+j.DiasDescanso
)
SELECT NumOperador,
 DiasDescansados = COUNT(DISTINCT FechaDescanso)
INTO #tmpDescansos 
FROM FechasDescansos
GROUP BY NumOperador;
 
select *from #tmpDescansos

Con esto yo estoy dando una rango de fechas para obtener un reporte, (FechaDesde, FechaHasta) tambien estoy colocando un número de Operador.

Voy a guardar en una tabla temporal el numOperador y la cantidad de fechas que descanso por Jornada para despues usarlos en un select.

Esto lo obtengo en base a la tabla de trfdespachos ahi voy y reviso si desde la Fecha Desde a Fecha Hasta hay algun registro de Fecha De Salida del Operador, en caso de que si hay entonces tiene asistencia en caso de que no este registrado es falta, entonces yo estoy mandando que me indique el reporte desde el día 3 que inicia su Jornada hatas el día 12 tiene 2 días de descanso obligatorios por lo cual su ultimo dia de trabajo en su Jornada es el día 10 y descansa 11 y 12 e inicia nuevamente su Jornada el día 13 asi continua siempre.

Con este Código yo obtengo si trabajo en sus dias de descanso,
Tengo Registaro un que Descanso el día 11 pero trabajo el día 12 entonces al momento que yo obtengo el número de Operador y los dias que descanso me trae que solo descanso 1 día, lo cual es correcto pero ahora si yo tengo que no trabajo el día 11 y el día 12 osea que si descanso sus días obligatorios yo quiero que me mande el numero de Operador y con valor 0 pero no lo he logardo.


He colocado la siguiente línea:
DiasDescansados = case when COUNT(DISTINCT FechaDescanso)='' then 0 else COUNT(DISTINCT FechaDescanso) end antes de mi tabla temporal pero no me regresa valor 0, he colocado isnull(,0) pero continuo igual.

Espero me puedan dar una nota.
Gracias.

Resultado
Resultado-2
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 Leonardo Daniel A.
Val: 98
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Como asignar un valor a una variable en sql ?

Publicado por Leonardo Daniel A. (48 intervenciones) el 21/07/2017 22:04:53
case when COUNT(DISTINCT FechaDescanso)

=''


then


Porque estas poniendo ese igual ahi ???? el count te regresa numericos no un string para que estes comparando con un string
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