0
、IN、NOTに私はこのクエリを持っている:私はORで、 "NOT IN" に以下のクエリを追加する必要がダブル選択
SELECT * FROM (
SELECT DISTINCT on (i.empleado) i.id as id,i.dia as dia,e.id as empleadoId,pe.nombre as personaNombre,pe.apellido1 as personaApellido1,pe.apellido2 personaApellido2 FROM rrhh.imputacion as i
INNER JOIN rrhh.empleado as e ON e.id = i.empleado
JOIN commons.persona AS pe ON e.persona_comun = pe.id
INNER JOIN rrhh.parte__imputaciones as pi ON pi.imputacion = i.id
INNER JOIN rrhh.parte as p ON pi.parte = p.id
WHERE p.borrador = false AND e.fecha_fin_contrato IS NULL AND e.security_domain_id = 2 and e.id
NOT IN(
SELECT DISTINCT on (i.empleado) i.empleado FROM rrhh.imputacion as i
INNER JOIN rrhh.empleado as e ON e.id = i.empleado
JOIN commons.persona AS pe ON e.persona_comun = pe.id
INNER JOIN rrhh.parte__imputaciones as pi ON pi.imputacion = i.id
INNER JOIN rrhh.parte as p ON pi.parte = p.id
WHERE i.dia >= '2017-12-04' AND i.dia <= '2017-12-10' and p.borrador = false AND e.fecha_fin_contrato IS NULL AND e.security_domain_id = 2
ORDER BY i.empleado, i.dia DESC,i.id
)
ORDER BY i.empleado, i.dia DESC,i.id)
t
ORDER BY t.dia DESC
:
SELECT DISTINCT on (a.empleado) a.empleado FROM rrhh.ausencia as a
INNER JOIN rrhh.empleado as e ON e.id = a.empleado
JOIN commons.persona AS pe ON e.persona_comun = pe.id
INNER JOIN rrhh.parte__imputaciones as pi ON pi.imputacion = a.id
INNER JOIN rrhh.parte as p ON pi.parte = p.id
WHERE a.dia >= '2017-12-04' AND a.dia <= '2017-12-11' and p.borrador = false AND e.fecha_fin_contrato IS NULL AND e.security_domain_id = 2
ORDER BY a.empleado, a.dia DESC,a.id
類似したものがあるはずです
SELECT * FROM (
SELECT DISTINCT on (i.empleado) i.id as id,i.dia as dia,e.id as empleadoId,pe.nombre as personaNombre,pe.apellido1 as personaApellido1,pe.apellido2 personaApellido2 FROM rrhh.imputacion as i
INNER JOIN rrhh.empleado as e ON e.id = i.empleado
JOIN commons.persona AS pe ON e.persona_comun = pe.id
INNER JOIN rrhh.parte__imputaciones as pi ON pi.imputacion = i.id
INNER JOIN rrhh.parte as p ON pi.parte = p.id
WHERE p.borrador = false AND e.fecha_fin_contrato IS NULL AND e.security_domain_id = 2 and e.id
NOT IN(
SELECT DISTINCT on (i.empleado) i.empleado FROM rrhh.imputacion as i
INNER JOIN rrhh.empleado as e ON e.id = i.empleado
JOIN commons.persona AS pe ON e.persona_comun = pe.id
INNER JOIN rrhh.parte__imputaciones as pi ON pi.imputacion = i.id
INNER JOIN rrhh.parte as p ON pi.parte = p.id
WHERE i.dia >= '2017-12-04' AND i.dia <= '2017-12-10' and p.borrador = false AND e.fecha_fin_contrato IS NULL AND e.security_domain_id = 2
ORDER BY i.empleado, i.dia DESC,i.id
OR -- UNION
SELECT DISTINCT on (a.empleado) a.empleado FROM rrhh.ausencia as a
INNER JOIN rrhh.empleado as e ON e.id = a.empleado
JOIN commons.persona AS pe ON e.persona_comun = pe.id
INNER JOIN rrhh.parte__imputaciones as pi ON pi.imputacion = a.id
INNER JOIN rrhh.parte as p ON pi.parte = p.id
WHERE a.dia >= '2017-12-04' AND a.dia <= '2017-12-11' and p.borrador = false AND e.fecha_fin_contrato IS NULL AND e.security_domain_id = 2
ORDER BY a.empleado, a.dia DESC,a.id
)
ORDER BY i.empleado, i.dia DESC,i.id)
t
ORDER BY t.dia DESC
1つまたは両方の副選択以外は誰もが欲しいです。だから私はANDが必要です。 ありがとうございます。 –