SQL - 选择具有相同表的两个不同属性的单列

时间:2021-07-26 12:14:48

标签: sql-server

当我使用查询花费大量时间时。

请给我建议。我在查询中使用相同的逻辑

select COUNT() OVER () as total_count, from (select acc.ENTITY,acc.OFFICE_CODE,td.EXCH_MIC_CODE,acc.NCR_ID,acc.ACCOUNT_NAME,to_char(td.trade_date,'Mon-YYYY') as period,

td.EXE_ACCT_NUMBER,td.trade_date,td.CURRENCY,brk.BRK_CURR,brk.BRK_AMT,brk.TAX_RATE,brk.AGREEMENT_NUM,brk.RECV_COMMENTS,inv.BILLING_GRP_CODE,inv.INV_REF_CODE,fgr.rate,

row_number() over(PARTITION BY td.exe_acct_number, to_char(td.trade_date,'Mon-YYYY'),brk.BRK_CURR ) as rn,

SUM(brk.BRK_AMT) FILTER (WHERE brk.settl_status = 'SETTLED' OR brk.settl_status = 'PENDING SETTLED' or brk.settl_status is null) OVER(PARTITION BY td.exe_acct_number,

to_char(td.trade_date,'Mon-YYYY'),brk.BRK_CURR) AS original_amt,sum(brk.BRK_AMT) OVER(PARTITION BY td.exe_acct_number, to_char(td.trade_date,'Mon-YYYY'),brk.BRK_CURR ) as total_brk_amt,

(case when brk.settl_status != 'SETTLED' then brk.broker_type else bt.broker_type END) as broker_type,

(case when brk.settl_status != 'SETTLED' then brk.billing_type else bt.billing_type END) as billing_type,

(case when brk.settl_status != 'SETTLED' then brk.chaser_name else bt.chaser_name END) as chaser_name,

(case when brk.settl_status != 'SETTLED' then brk.business_line else bt.business_line END) as business_line,

**(SELECT fgr.rate FROM public.t_fees_fx_gold_rates WHERE from_currency = brk.brk_curr AND to_currency = 'USD') AS usd_value,**

(case when brk.settl_status != 'SETTLED' then brk.bill_to_party else bt.bill_to_grp END) as bill_to_party from public.T_FEES_TRADE td

left join public.T_FEES_BROKERAGE brk on td.trade_id=brk.trade_id left join public.T_FEES_ACCOUNT acc on td.exe_acct_number=acc.acct_num

left join public.T_FEES_INVOICE inv on inv.trade_id=td.trade_id 
**left join public.t_fees_fx_gold_rates fgr on brk.BRK_CURR=fgr.from_currency**

left join public.t_fees_bill_to_group bt on td.exe_acct_number=bt.bill_criteria and

(td.trade_date between bt.date_from and (case when bt.date_to is null then now() else bt.date_to end))

left join public.t_fees_exchange_grouping ex on ex.exch_grp_name=bt.exch_grp_name and

(td.trade_date between ex.date_from and (case when ex.date_to is null then now() else ex.date_to end)) and

',' || UPPER(ex.exch_list) || ',' LIKE CONCAT('%,',UPPER(td.exch_mic_code), ',%')

where brk.settl_status!='SETTLED' or brk.settl_status is null and brk.calc_status = 'SUCCESS' and fgr.to_currency='EUR') qry where qry.rn=1


0 个答案:

没有答案