请原谅标题,因为我不知道如何将其列入标题。
我有一张表staging_cust_acct
(naics_cd, naics_desc varchar, is_pep, phone_num, is_updated, update_date
)
我在下面写了一些语句来更新这个表。我需要使用代码只更新那些以前没有更新的列(我有is_updated
(0或1)和update_date
列)
如果您想知道我为什么单独更新语句,那是因为还有更多的更新语句具有依赖关系(比如UPDATE 2语句只需要在UPDATE 1之后运行)
我可以在下面的SQL语句中添加什么来应用上述逻辑?
-- Update NAIC code and description
UPDATE S
SET s.naics_cd = left(n.naic, 6),
s.naics_desc = substring(n.naic, 9, 255)
from mtb..staging_cust_acct s
right outer join mtb_aml..tb_party_kyc e
on e.customerinternalid = s.party_key
right outer join mtb_aml..tb_ref_naic n
on e.d_case_id = n.d_case_id
-- Update is_PEP Flag
UPDATE S
SET s.is_pep = '1'
from mtb..staging_cust_acct s
right outer join mtb_aml..tb_party_kyc e
on e.CustomerInternalID = s.party_key
right outer join mtb_aml..tb_ref_pep_details p
on e.d_case_id = p.d_case_id
-- Update party phone number
UPDATE S
SET s.phone_num = pc.phone
from mtb..staging_cust_acct s
right outer join mtb_aml..tb_party_kyc e
on s.party_key = e.customerinternalid
right outer join mtb_aml..tb_ref_primary_contact pc
on pc.d_case_id = e.d_case_id
答案 0 :(得分:1)
在sql中添加where
条件以检查is_updated
(0或1)和update_date
,如:
UPDATE S
SET s.naics_cd = left(n.naic, 6),
s.naics_desc = substring(n.naic, 9, 255)
from mtb..staging_cust_acct s
right outer join mtb_aml..tb_party_kyc e
on e.customerinternalid = s.party_key
right outer join mtb_aml..tb_ref_naic n
on e.d_case_id = n.d_case_id
WHERE s.is_updated=0 --Added Condition
AND s.update_date IS NULL --Added Condition
在此,我假设is_updated=0
表示未更新且update_date
可以为空且&仅在编辑值时设置。
如果上述假设对您不利,您可以相应地更改条件。