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
from (select c.*,
check_total
from db1.tbl_payment_checks c
join (select sum(net) as check_total,
check_nbr
from (select nvl(sum(total_net),0) net,
check_nbr
from db1.tbl_wip_hist_header
group by check_nbr
union all
select nvl(sum(refund_amount)*-1,0) net,
check_number check_nbr
from db1.tbl_payment_refund_header
group by check_number)
group by check_nbr) sums on (c.check_nbr = sums.check_nbr)
where payee_no = '840932794'
order by payment_dte desc) checks
left join db1.tbl_code_country country
on (checks.payee_country_cde = country.country)
where rownum < 10
order by payment_dte desc
Run Code Online (Sandbox Code Playgroud)
退出所有组by-s和子查询.你可以使用left joins和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
Run Code Online (Sandbox Code Playgroud)
那应该跑得快得多.
| 归档时间: |
|
| 查看次数: |
132 次 |
| 最近记录: |