具有内部联接的T-Sql Merge命令。可以这样做吗?

时间:2014-03-06 21:25:19

标签: sql sql-server tsql merge

我有一个使用t-sql merge命令的Stored过程。问题是我需要合并超过1个表。我需要在目标中加入INNER JOIN。这是它现在运行的代码片段 这就是它现在的样子

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])

1 个答案:

答案 0 :(得分:0)

您可以使用视图作为目标来隐式连接表