所以我有幾個SQL命令,我基本上想做一個過程,但在做這件事時,我想優化它們一點點。整合一個SQL存儲過程
它的第一部分是這樣的:
select tr_reference_nbr
from cfo_daily_trans_hist
inner join cfo_fas157_valuation on fv_dh_daily_trans_hist_id = dh_daily_trans_hist_id
inner join cfo_tran_quote on tq_tran_quote_id = dh_tq_tran_quote_id
inner join cfo_transaction on tq_tr_transaction_id = tr_transaction_id
inner join cfo_fas157_project_valuation ON fpv_fas157_project_valuation_id = fv_fpv_fas157_project_valuation_id AND fpv_status_bit = 1
group by tr_reference_nbr, fv_dh_daily_trans_hist_id
having count(*)>1
該查詢返回到我這,在我們的系統,需要除去具有重複數據tr_reference_nbr
的存在。這個運行之後,我在時間上面的查詢給我跑在tr_reference_nbr
一個這樣其他查詢,複製和粘貼:
select
tr_reference_nbr , dh_daily_trans_hist_id ,cfo_fas157_project_valuation.*,
cfo_daily_trans_hist.* ,
cfo_fas157_valuation.*
from cfo_daily_trans_hist
inner join cfo_fas157_valuation on fv_dh_daily_trans_hist_id = dh_daily_trans_hist_id
inner join cfo_tran_quote on tq_tran_quote_id = dh_tq_tran_quote_id
inner join cfo_transaction on tq_tr_transaction_id = tr_transaction_id
iNNER JOIN cfo_fas157_project_valuation ON fpv_fas157_project_valuation_id = fv_fpv_fas157_project_valuation_id
where
tr_reference_nbr in
(
[PASTEDREFERENCENUMBER]
)
and fpv_status_bit = 1
order by dh_val_time_stamp desc
現在這個查詢讓我對那個特定tr_reference_nbr
了一系列的記錄。然後我必須查看這些數據並找到具有匹配(重複)dh_daily_trans_hist_id
的行。一旦找到了,我看看並確保以下列也匹配該行,所以我知道它們是真實的重複項:fpv_unadjusted_sponsor_charge
,fpv_adjusted_sponsor_charge
,fpv_unadjusted_counterparty_charge
和fpv_adjusted_counterparty_charge
。
如果這些都匹配,我再看看另一列fv_create_dt
,並確保兩個時間戳之間的差異小於此值。如果有,我運行已存儲早些時候排又一查詢,它看起來像這樣:
begin tran
update cfo_fas157_valuation set fpv_status_bit = 0 where fpv_fas157_project_valuation_id = [IDRECIEVEDFROMTHEOTHERTABLE]
commit
正如你所看到的,這仍然是即使我們已經寫了幾個疑問非常手工工藝,但我試圖找到一個解決方案,我們可以只運行一個查詢,並且除了最終查詢之外,它基本上會做所有事情。所以基本上我們需要更新一些fpv_fas157_project_valuation_id
的東西。
從查看這些查詢,你們中的任何人都可以看到一個簡單的方法來結合所有這些?我一整天都在努力工作,似乎無法運行。我覺得我一直在搞連接和東西。
謝謝!