Выйти со всеми групповыми байтами и подзапросами. Вы можете просто использовать left join
s и предложение over
, чтобы получить то, что вы хотите:
select to_date(checks.payment_dte, 'YYYYMMDD') as payment_date,
checks.run_number,
checks.check_nbr as check_number,
checks.check_amt as check_amount,
checks.payee_no as payee_number,
checks.loc as location,
checks.fac_state as facility_state,
checks.delta_usa_ind,
checks.payee_lnme as payee_last_name,
checks.payee_fnme as payee_first_name,
checks.payee_addr1 as payee_address1,
checks.payee_addr2 as payee_address2,
checks.payee_addr3 as payee_address3,
checks.payee_city,
checks.payee_st as payee_state,
to_char(checks.payee_zip, '00000') as payee_zip,
to_char(checks.payee_zip4, '0000') as payee_zip4,
checks.payee_country_cde as payee_country_code,
country.country_abbreviation as payee_country_code_description,
checks.maint_code as maintenance_code,
checks.mod_dte as mod_date,
checks.mod_op,
checks.payment_profile_id,
checks.bank_profile_id,
checks.parent_id,
sum(nvl(h.total_net, 0) + nvl(r.refund_amount,0)*-1) over (partition by checks.check_nbr) as check_total
from
db1.tbl_payment_checks checks
left join db1.tbl_wip_hist_header h on
checks.check_nbr = h.check_nbr
left join db1.tbl_payment_refund_header r on
checks.check_nbr = r.check_nbr
left join db1.tbl_code_country country on
checks.payee_country_cde = country.country
where
rownum < 10
and checks.payee_no = '840932794'
order by payment_dte desc
Это должно работать намного быстрее.