usar campo obtenido dentro de un CASE en la parte del THEN

From: "jvenegasperu (dot)" <jvenegasperu(at)gmail(dot)com>
To: Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: usar campo obtenido dentro de un CASE en la parte del THEN
Date: 2018-03-08 19:48:46
Message-ID: CA+KjtGc7HEQCU=b6TL-tCXf3X5CG=KaZ=FOBRq9wgTom5rCoUA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Marcos Michel Martinez Perez 2018-03-12 13:22:15 Ayuda sobre permisos de usuario
Previous Message jvenegasperu . 2018-03-08 15:28:14 Re: Optimizar consulta a tabla con fechas y horas