Това връща всички редове, където съществува дубликат :
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;
Не е ясно къде leave_state <> 'refuse'
трябва да се прилагат. Ще трябва да определите изискванията. Моят пример изключва редове с leave_state = 'refuse'
(и leave_state IS NULL
с него!) напълно.
ctid
е сурогат за бедняк за вашия неразкрит (недефиниран?) първичен ключ.
Свързани:
- Как да (или мога) да ИЗБЕРЯ DISTINCT в множество колони?
- Какво е по-лесно за четене в СЪЩЕСТВУВА ли подзаявки?