Cela renvoie toutes les lignes où un doublon existe :
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;
On ne sait pas où leave_state <> 'refuse'
devrait s'appliquer. Il faudrait définir les besoins. Mon exemple exclut les lignes avec leave_state = 'refuse'
(et leave_state IS NULL
avec elle !) complètement.
ctid
est un substitut du pauvre pour votre clé primaire non divulguée (indéfinie ?).
Connexe :
- Comment puis-je (ou puis-je) SELECT DISTINCT sur plusieurs colonnes ?
- Ce qui est le plus facile à lire dans EXISTS sous-requêtes ?