Hola a todos estoy trabajando con una consulta con una tabla de fechas y
quisiera saber si es posible hacer lo siguiente que explico a continuación
en la siguiente consulta

SELECT m.empid AS dni,
    m.empname AS nombre_empleado,
    '201802' AS periodo,
    m.fecha,
    dia_semana(m.fecha) AS dia_semana,
    CASE
            WHEN ((( SELECT min(m1.hora) AS min
               FROM trans m1
              WHERE m1.empid = m.empid AND m.fecha = m1.fecha AND (m1.hora
- d.hora_salida) <= '00'::interval AND m1.fecha >= d.fecha_ini and m1.fecha
<= d.fecha_fin
                    and d.turno_id = 1 or d.turno_id = 3
              GROUP BY (m1.fecha) limit 1 )) - d.hora_ingreso) >=
'00:01:00'::time without time zone::interval

--En estas lineas desde el case se obtiene un un registro de un campo que
al final se resta menos hora de ingreso entonces viene la parte del then

THEN
              (( SELECT min(m1.hora) AS min
               FROM trans m1
             WHERE m1.empid = m.empid AND m.fecha = m1.fecha AND (m1.hora -
d.hora_salida) <= '00'::interval AND m1.fecha >= d.fecha_ini and m1.fecha
<= d.fecha_fin
                    and d.turno_id = 1 or d.turno_id = 3
             GROUP BY (m1.fecha) limit 1)) - d.hora_ingreso

--Esta parte del THEN es exactamente igual que arriba la pregunta es puedo
guardar el resultado de select de la parte del CASE para usarlo despues en
la parte del THEN?

asi en lugar de hacer toda la consulta escrita de nuevo podria solamente
llamar como una variable algo asi es posible?

            ELSE NULL::interval
        END AS tardanz_ma,
   FROM trans m
LEFT JOIN rrhh_persona_horario d on
     m.empid = d.documento
     and d.activo = 1
     and d.turno_id = 1 or d.turno_id = 3
LEFT JOIN rrhh_persona_horario d1 on
     m.empid = d1.documento
     and d1.activo = 1
     and d1.turno_id = 2 or d1.turno_id = 4
  WHERE
  ((m.fecha >= d.fecha_ini and m.fecha <= d.fecha_fin )
  or (m.fecha >= d1.fecha_ini and m.fecha <= d1.fecha_fin )) and
   (m.fecha >= '2018-01-26' and m.fecha <= '2018-02-02')
  GROUP BY m.empid, m.empname, m.fecha,

d.fecha_ini,d.fecha_fin,d.hora_ingreso,d.hora_salida,d.turno_id,d.sal_max_ma,d.sal_max_ta,

d1.fecha_ini,d1.fecha_fin,d1.hora_ingreso,d1.hora_salida,d1.turno_id,d1.sal_max_ma,d1.sal_max_ta
  ORDER BY m.fecha;

-- 
José Mercedes Venegas Acevedo
cel Mov RPC 964185205

Reply via email to