带有内部联接的T-Sql合并命令。这能做到吗?
我有一个使用t-sqlmerge命令的存储过程。问题是我需要合并多个表。我需要在我的目标中有一个内部连接。这是它现在如何运行的代码片段 这就是现在的样子带有内部联接的T-Sql合并命令。这能做到吗?,sql,sql-server,tsql,merge,Sql,Sql Server,Tsql,Merge,我有一个使用t-sqlmerge命令的存储过程。问题是我需要合并多个表。我需要在我的目标中有一个内部连接。这是它现在如何运行的代码片段 这就是现在的样子 WITH DealersCTE AS ( SELECT ROW_NUMBER() OVER(PARTITION BY [DealershipName], [Dealer Zip] ORDER BY [DealershipName] ASC, [Dealer Zip] ASC) AS RowNum , [Dealershi
WITH DealersCTE AS (
SELECT ROW_NUMBER() OVER(PARTITION BY [DealershipName], [Dealer Zip] ORDER BY [DealershipName] ASC, [Dealer Zip] ASC) AS RowNum
, [DealershipName]
, [DAddress]
FROM [DataFeedStaging2]
)
MERGE dbo.Dealers AS Target
USING (
SELECT [DealershipName]
,[DAddress]
FROM DealersCTE
WHERE (RowNum = 1)
) AS Source
ON (Target.[CompanyName] = Source.[DealershipName] AND Target.[Zipcode] = Source.[Dealer Zip])
这就是我试图改变它的方式。因为[VendorID]存储在另一个表中,所以在我看来,在合并该字段之前,需要先进行连接
WITH DealersCTE AS (
SELECT ROW_NUMBER() OVER(PARTITION BY [VendorID] ORDER BY [VendorID] ASC, [VendorID] ASC) AS RowNum
, [DealershipName]
, [DAddress]
, [VendorID]
FROM [DataFeedStaging2]
)
//The 2 lines below this where added as how i visioned it to work.
//they do not work
MERGE dbo.Dealers
inner join dbo.tblDataFeeds_External on dealers.dealerid = tblDataFeeds_External.dealerid AS Target
USING (
SELECT [DealershipName]
,[DAddress]
,[VendorID]
FROM DealersCTE
WHERE (RowNum = 1)
) AS Source
ON (Target. [VendorID] = Source. [VendorID])
您可以使用视图作为隐式连接表的目标来实现这一点不要认为您可以做到这一点。您当然可以使用子句在您的
中加入连接。@Andrew我如何才能加入到我的目标中?也许您可以使用视图(隐式加入表)作为连接target@jean请将您的评论移至答案。我想把它作为一个正确的答案。我用过它,它对我很有效。