Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有内部联接的T-Sql合并命令。这能做到吗?_Sql_Sql Server_Tsql_Merge - Fatal编程技术网

带有内部联接的T-Sql合并命令。这能做到吗?

带有内部联接的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

我有一个使用t-sqlmerge命令的存储过程。问题是我需要合并多个表。我需要在我的目标中有一个内部连接。这是它现在如何运行的代码片段 这就是现在的样子

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请将您的评论移至答案。我想把它作为一个正确的答案。我用过它,它对我很有效。