我正在尝试使用MERGE语句更新表中包含更改的数据,如果该行不存在则插入数据。即使满足合并条件,正在插入的数据也会包含不正确的数据。
这些是必须插入的示例数据::
writeHello
但插入的数据低于::
PrimaryFundName SsFundCode PortfolioName DataSourceName AssetClass SubAssetClass Strategy SubStrategy DataSourceFundName CodeRedFundName
Ventures 33EU Endowment SS_Private Edge Fixed Income Private Equity Venture Capital Growth Equity 137 Ventures III 137 Ventures III
Ventures 33EU Endowment SS_Accounting Equity Private Equity Venture Capital Growth Equity 137 VENTURES III LP 137 Ventures III
DataSource和Datasource Fund名称不正确。以下是我的MERGE声明::
PrimaryFundName SsFundCode PortfolioName DataSourceName AssetClass SubAssetClass Strategy SubStrategy DataSourceFundName CodeRedFundName
Ventures 33EU Endowment SS_Private Perf Fixed Income Private Equity Venture Capital Growth Equity 137 Ventures III 137 Ventures III
Ventures 33EU Endowment SS_Accounting Equity Private Equity Venture Capital Growth Equity 137 VENTURES III 137 Ventures III
请告诉我我做错了什么。谢谢!
更新:我遇到了这个问题。不正确的数据来自一个时髦的JOIN。
答案 0 :(得分:2)
你的问题与合并
无关我们怎么说,除非你没有提供表样本数据和结构等其他细节,否则你会得到错误的结果。
或者您可以像这样自己调试,
select tmp.*
from FundRel FR
inner join #FundTemp Tmp
ON (FR.DataSourceFundName = Tmp.DataSourceFundName
AND FR.PortFolioID = Tmp.PortFolioID
AND FR.DataSourceID = Tmp.DataSourceID)
答案 1 :(得分:1)
仔细检查WHEN MATCHED块。 FR.CodeRedFundName = Tmp.NewCodeRedFundName
列名称与您上面提供的示例数据不同。