将带有连接存储过程的mysql更新转换为sql server

将带有连接存储过程的mysql更新转换为sql server,mysql,sql-server,stored-procedures,Mysql,Sql Server,Stored Procedures,我有一个update语句需要转换成sql server,有人能给我一些指导吗 声明如下: UPDATE #Commission INNER JOIN (Select cl.UserId, SUM(cl.CommissionAmount) As CommTotal From CommissionLog As cl Where cl.CommissionPeriodId = @CommissionPeriodId Group

我有一个update语句需要转换成sql server,有人能给我一些指导吗

声明如下:

UPDATE #Commission 
INNER JOIN (Select cl.UserId, SUM(cl.CommissionAmount) As CommTotal
            From CommissionLog As cl
            Where cl.CommissionPeriodId = @CommissionPeriodId
            Group By cl.UserId) As cl
    ON cl.UserId = c.Id
SET Commission = cl.CommTotal;
临时表的布局为:

 CREATE TABLE #Commission(
            Id int,
            FirstName varchar(255),
            LastName varchar(255),
            JobTitle varchar(255),
            Commission decimal(18,4) default 0,
            Chargeback decimal(18,4) default 0
            );
这应该起作用:

UPDATE c
SET Commission = cl.CommTotal
FROM #Commission AS c
INNER JOIN (Select cl.UserId, SUM(cl.CommissionAmount) As CommTotal
            From CommissionLog As cl
            Where cl.CommissionPeriodId = @CommissionPeriodId
            Group By cl.UserId) As cl
    ON cl.UserId = c.Id
请参阅
SQL SERVER
中的了解使用联接更新

UPDATE c
SET c.Commission = cl.CommTotal
FROM #Commission c
INNER JOIN (Select cl.UserId, SUM(cl.CommissionAmount) As CommTotal
            From CommissionLog As cl
            Where cl.CommissionPeriodId = @CommissionPeriodId
            Group By cl.UserId) As cl
    ON cl.UserId = c.Id;