Ich versuche, MERGE-Anweisung zu verwenden, um Daten in einer Tabelle mit Änderungen zu aktualisieren und Daten einzufügen, wenn die Zeile nicht vorhanden ist. Obwohl die Zusammenführungsbedingungen erfüllt sind, haben die Daten, die eingefügt werden, falsche Daten. MERGE-Anweisung fügt falsche Daten TSQL
Dies sind die Beispieldaten, die eingefügt werden soll ::
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
Aber die eingefügten Daten war unter ::
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
Datasource und Datasource Fondsname nicht korrekt war. Unten ist meine MERGE-Anweisung ::
MERGE FundRel FR
USING #FundTemp Tmp
ON (FR.DataSourceFundName = Tmp.DataSourceFundName AND FR.PortFolioID =
Tmp.PortFolioID AND FR.DataSourceID = Tmp.DataSourceID)
WHEN MATCHED THEN
UPDATE SET FR.DataSourceFundName = Tmp.NewDataSourceFundName
, FR.CodeRedFundName = Tmp.NewCodeRedFundName
, FR.AssetClassID = Tmp.AssetClassID
, FR.SubAssetClassID = Tmp.SubAssetClassID
, FR.StrategyID = Tmp.StrategyID
, FR.SubStrategyID = Tmp.SubStrategyID
WHEN NOT MATCHED BY TARGET THEN
INSERT ([PortfolioID]
,[DataSourceID]
,[PrimaryFundID]
,[DataSourceFundName]
,[FundNumber]
,[AssetClassID]
,[SubAssetClassID]
,[StrategyID]
,[SubStrategyID]
,[CodeRedFundName])
VALUES (Tmp.[PortfolioID]
,Tmp.[DataSourceID]
,Tmp.[PrimaryFundID]
,Tmp.[DataSourceFundName]
,Tmp.FundCode
,Tmp.[AssetClassID]
,Tmp.[SubAssetClassID]
,Tmp.[StrategyID]
,Tmp.[SubStrategyID]
,Tmp.[CodeRedFundName]);
Bitte beraten, was ich falsch mache. Vielen Dank!
Update: Ich bin auf das Problem gekommen. Die falschen Daten kamen aus einem funkigen JOIN.
Sie haben Recht @KumarHarsh. Die schlechten Daten kamen von einem funkigen Join, den ich habe. Ich versuche das zu korrigieren. Schätze deine Hilfe – Ramya