繁体   English   中英

使用sql中的where子句更新合并查询

[英]update merge query with where clause in sql

注意:我是从sql表格导入数据。 在此之后,我想在表中插入数据,但是当它找到相同的ContractNo(合同编号)时,它将更新数据,当它找到不同的ContractNo(合同编号)时,它将作为新记录插入

但我的合并查询不适用于where语句。

string mergeSql = "merge into " + tableName + " as Target " +
                                  "using Ro_Consumers_Temp as Source " +
                                  "on " +
                                  "Target.ContractNo=Source.ContractNo " +
                                  "when not matched then " +
                                  "insert values (Source.Ronumber,Source.ContractNo,Source.BusinessPartner,Source.ContractAccount,Source.IBC,Source.Portion,Source.MRU,Source.Installation,Source.MeterNo,Source.LegacyNumber,Source.ConsumerNo,Source.ConsumerName,Source.Address,Source.Tariff,Source.ROAgent,Source.IBCName,Source.CD,Source.Batch,Source.JasbNumber,Source.SheetNo, Source.ContactName,Source.ContactNumber,Source.FOName,Source.[Address&LandMark],Source.NatureOfBusiness)" +
                                  "when matched then update set Batch = Source.Batch, JasbNumber = Source.JasbNumber Where Target.Batch=Source.Batch;"; 

WHERE子句替换为其他WHEN MATCHED子句条件:

string mergeSql = "merge into " + tableName + " as Target " +
                                  "using Ro_Consumers_Temp as Source " +
                                  "on " +
                                  "Target.ContractNo=Source.ContractNo " +
                                  "when not matched then " +
                                  "insert values (Source.Ronumber,Source.ContractNo,Source.BusinessPartner,Source.ContractAccount,Source.IBC,Source.Portion,Source.MRU,Source.Installation,Source.MeterNo,Source.LegacyNumber,Source.ConsumerNo,Source.ConsumerName,Source.Address,Source.Tariff,Source.ROAgent,Source.IBCName,Source.CD,Source.Batch,Source.JasbNumber,Source.SheetNo, Source.ContactName,Source.ContactNumber,Source.FOName,Source.[Address&LandMark],Source.NatureOfBusiness)" +
                                  "when matched " +
                                  "and Target.Batch=Source.Batch " + // <<< Move the clause here
                                  "then update set Batch = Source.Batch, JasbNumber = Source.JasbNumber"; 

有关更多信息,请参见MERGE语句文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM