Dette returnerer alle rækker, hvor der findes en dublet :
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;
Det er uklart, hvor leave_state <> 'refuse'
bør gælde. Du skal definere krav. Mit eksempel ekskluderer rækker med leave_state = 'refuse'
(og leave_state IS NULL
med det!) helt.
ctid
er en fattig mands surrogat for din ikke-oplyste (udefinerede?) primærnøgle.
Relateret:
- Hvordan kan (eller kan jeg) VÆLGE DISTINCT på flere kolonner?
- Hvad er nemmere at læse i FINDES underforespørgsler?