Ini mengembalikan semua baris tempat ada duplikat :
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;
Tidak jelas di mana leave_state <> 'refuse'
harus berlaku. Anda harus mendefinisikan persyaratan. Contoh saya mengecualikan baris dengan leave_state = 'refuse'
(dan leave_state IS NULL
dengan itu!) sepenuhnya.
ctid
adalah pengganti orang miskin untuk kunci utama Anda yang tidak diungkapkan (tidak ditentukan?).
Terkait:
- Bagaimana cara (atau dapatkah saya) PILIH BERBEDA pada beberapa kolom?
- Apa yang lebih mudah dibaca ADA subkueri?