select VCHR.VENDOR_ID, DST.DEPTID, V_LN.MERCHANDISE_AMT, DST.PERFORM_START_DT, count(*)
from PS_VOUCHER VCHR, PS_VOUCHER_LINE V_LN, PS_DISTRIB_LINE DST, PS_VENDOR VND, PS_PYMNT_VCHR_XREF REF
where VCHR.BUSINESS_UNIT = V_LN.BUSINESS_UNIT
and V_LN.BUSINESS_UNIT = DST.BUSINESS_UNIT
and VCHR.VOUCHER_ID = V_LN.VOUCHER_ID
and VCHR.VOUCHER_ID = REF.VOUCHER_ID
and V_LN.VOUCHER_ID = DST.VOUCHER_ID
and V_LN.VOUCHER_LINE_NUM = DST.VOUCHER_LINE_NUM
and VCHR.VENDOR_ID = VND.VENDOR_ID
and REF.PYMNT_SELCT_STATUS != 'X' -- NOTICE, when checking for dups, even check the records that have been paid (but NOT cancelled)
and REF.PYMNT_TYPE != 'W'
and (REF.PYMNT_HOLD = 'N' AND REF.VNDR_PYMNT_HLD_FLG = 'N')
and (VCHR.ORIGIN in ('EVC', 'ONL') AND V_LN.PO_ID = ' ')
and VCHR.POST_STATUS_AP = 'P'
and VCHR.CLOSE_STATUS = 'O'
and VCHR.VOUCHER_STYLE = 'REG'
and DST.DISTRIB_LINE_NUM = 1
where (VCHR.VENDOR_ID,DST.DEPTID,V_LN.MERCHANDISE_AMT,DST.PERFORM_START_DT) in
(
select distinct VCHR.VENDOR_ID, DST.DEPTID, V_LN.MERCHANDISE_AMT , DST.PERFORM_START_DT
from PS_VOUCHER VCHR, PS_VOUCHER_LINE V_LN, PS_DISTRIB_LINE DST, PS_VENDOR VND, PS_PYMNT_VCHR_XREF REF
where VCHR.BUSINESS_UNIT = V_LN.BUSINESS_UNIT
and V_LN.BUSINESS_UNIT = DST.BUSINESS_UNIT
and VCHR.VOUCHER_ID = V_LN.VOUCHER_ID
and VCHR.VOUCHER_ID = REF.VOUCHER_ID
and V_LN.VOUCHER_ID = DST.VOUCHER_ID
and V_LN.VOUCHER_LINE_NUM = DST.VOUCHER_LINE_NUM
and VCHR.VENDOR_ID = VND.VENDOR_ID
and REF.PYMNT_SELCT_STATUS = 'N' -- NOTICE only the unpaid records are evaluated
and (REF.PYMNT_HOLD = 'N' AND REF.VNDR_PYMNT_HLD_FLG = 'N')
and (VCHR.ORIGIN in ('EVC', 'ONL') AND V_LN.PO_ID = ' ')
and VCHR.POST_STATUS_AP = 'P'
and VCHR.CLOSE_STATUS = 'O'
and VCHR.VOUCHER_STYLE = 'REG'
and DST.DISTRIB_LINE_NUM = 1
)
having count(*) > 1
There are more efficient ways potentially, but this should get you started.