Sql server 2008 组合一个SQL存储过程
所以我有几个SQL命令,基本上我想做一个proc,但在做这件事的时候,我想对它们进行一些优化 第一部分是:Sql server 2008 组合一个SQL存储过程,sql-server-2008,tsql,Sql Server 2008,Tsql,所以我有几个SQL命令,基本上我想做一个proc,但在做这件事的时候,我想对它们进行一些优化 第一部分是: 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_
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\u reference\u nbr
,需要删除这些重复数据。运行此查询后,我运行另一个查询,在上述查询给我的tr\u reference\u 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\u reference\u nbr
的记录。然后,我必须查看这些数据并找到具有匹配(重复)dh_daily_trans_hist_id的行。找到后,我会查看并确保以下列也与该行匹配,以便我知道它们是真实的重复项:fpv未调整的赞助费用
,fpv调整的赞助费用
,fpv未调整的对手费用
,以及fpv调整的对手费用
如果这些都匹配,那么我再查看另一列,fv\u create\u dt
,并确保两个时间戳之间的差异小于一分钟。如果有,我将对先前存储的行运行另一个查询,如下所示:
begin tran
update cfo_fas157_valuation set fpv_status_bit = 0 where fpv_fas157_project_valuation_id = [IDRECIEVEDFROMTHEOTHERTABLE]
commit
正如您所见,这仍然是一个非常手动的过程,尽管我们编写了一些查询,但我正在尝试找到一个解决方案,我们可以只运行一个查询,它基本上可以完成除最终查询之外的所有操作。因此,基本上,这将为我们提供一些需要更新的项目评估id
通过查看这些查询,你们中有人看到了一种简单的方法来组合所有这些吗?我花了一整天的时间在这上面,似乎没有什么东西可以运行。我觉得我一直在搞砸接头之类的东西
谢谢 您可以通过多种方式组合这些查询:
- 用于存储查询结果-适用于存储过程
- 用于存储查询结果-适用于存储过程
- 用于存储查询结果-适用于单个查询