SELECT a.company_code,
a.company_name,
a.gl_account_nbr,
a.clearing_date,
a.clear_account_document_nbr,
a.doc_assignment,
a.fiscal_year,
a.gl_document_nbr,
a.document_item_nbr,
a.doc_posting_date,
a.document_date,
a.document_currency,
a.doc_reference,
a.document_type,
a.fiscal_period,
a.doc_posting_key,
a.doc_account_debit_or_credit,
a.business_scope,
a.doc_tax_code,
a.doc_local_currency_amount,
a.doc_currency_amount,
a.tax_amount_standard,
a.doc_currency_tax,
a.doc_item_text,
a.doc_source_order_nbr,
a.plant_code,
a.cost_center,
a.doc_payment_starting_date,
a.doc_open_item_management,
a.doc_value_date,
a.bpm_order_no,
a.process_code,
a.paymethod,
a.paystract,
a.zshare_ctr,
a.cl_document_nbr,
a.handling_accountant,
a.handling_accountant_name,
a.z_proid,
a.pernr,
a.dr_amount,
a.cr_amount,
a.paymethod_name,
a.gl_account_name,
a.anti_accounting_mark,
a.enter_time,
a.wb_debit_amount,
a.wb_crebit_amount,
a.ts_ms,
a.cnt
FROM ( SELECT a_1.company_code,
a_1.company_name,
a_1.gl_account_nbr,
a_1.clearing_date,
a_1.clear_account_document_nbr,
a_1.doc_assignment,
a_1.fiscal_year,
a_1.gl_document_nbr,
a_1.document_item_nbr,
a_1.doc_posting_date,
a_1.document_date,
a_1.document_currency,
a_1.doc_reference,
a_1.document_type,
a_1.fiscal_period,
a_1.doc_posting_key,
a_1.doc_account_debit_or_credit,
a_1.business_scope,
a_1.doc_tax_code,
a_1.doc_local_currency_amount,
a_1.doc_currency_amount,
a_1.tax_amount_standard,
a_1.doc_currency_tax,
a_1.doc_item_text,
a_1.doc_source_order_nbr,
a_1.plant_code,
a_1.cost_center,
a_1.doc_payment_starting_date,
a_1.doc_open_item_management,
a_1.doc_value_date,
a_1.bpm_order_no,
head.procode AS process_code,
payment.paymethod,
a_1.paystract,
a_1.zshare_ctr,
a_1.cl_document_nbr,
CASE
WHEN head.pernrjb IS NOT NULL AND head.pernrjb <> ‘’::text THEN head.pernrjb
ELSE bkpf.usnam
END AS handling_accountant,
pa001.sname AS handling_accountant_name,
head.proid AS z_proid,
head.pernr,
a_1.dr_amount,
a_1.cr_amount,
payment.paymethodtxt AS paymethod_name,
a_1.gl_account_name,
a_1.anti_accounting_mark,
a_1.enter_time,
a_1.wb_debit_amount,
a_1.wb_crebit_amount,
a_1.ts_ms,
row_number() OVER (PARTITION BY a_1.company_code, a_1.gl_account_nbr, a_1.fiscal_year, a_1.fiscal_period, a_1.gl_document_nbr, a_1.document_item_nbr ORDER BY head.procode DESC) AS cnt
FROM table_01 a_1
LEFT JOIN dwd_ztbpm_payment_view payment ON a_1.bpm_order_no = payment.orderno
LEFT JOIN dwd_ztfi_trpay_view trpay ON a_1.bpm_order_no = trpay.orderno
LEFT JOIN dwd_bkpf_r bkpf ON bkpf.bukrs = a_1.company_code AND bkpf.gjahr = a_1.fiscal_year AND bkpf.belnr = a_1.gl_document_nbr
LEFT JOIN dwd_ztbpm_post_head_r head ON a_1.bpm_order_no = head.orderno
LEFT JOIN dwd_pa0001_r pa001 ON pa001.pernr = head.pernrjb) a
WHERE a.cnt = 1 用rownumber会导致sql运行较慢,该怎么改能让sql运行快一点且数据结果与之前保持一致 DISTINCT ON 不支持 改完后的sql具体给我写一下
最新发布