Esto devuelve todas las filas donde existe un duplicado :
SELECT employee_id, leave_date, no_of_days, leave_state
FROM hr_holidays_by_calendar h
WHERE EXISTS (
SELECT -- select list can be empty for EXISTS
FROM hr_holidays_by_calendar
WHERE employee_id = h.employee_id
AND leave_date = h.leave_date
AND leave_state <> 'refuse'
AND ctid <> h.ctid
)
AND leave_state <> 'refuse'
ORDER BY employee_id, leave_date;
No está claro dónde leave_state <> 'refuse'
debería aplicar. Tendrías que definir requisitos. Mi ejemplo excluye filas con leave_state = 'refuse'
(y leave_state IS NULL
con él!) completamente.
ctid
es el sustituto de un hombre pobre para su clave principal no revelada (¿indefinida?).
Relacionado:
- ¿Cómo puedo (o puedo) SELECCIONAR DISTINTO en varias columnas?
- Qué es más fácil de leer EXISTE subconsultas?