SQL Server - 具有max和group by的Update语句

AAA*_*AAA 2 sql t-sql sql-server

我有一个SQL Server表,其中包含这样的Salary_ID列,但只填充了列:

Name: Salary
Salary_ID, TotalAmount
Run Code Online (Sandbox Code Playgroud)

我有另一个具有此格式的SQL Server表,并填充了所有列:

Name: SalaryImport
Row_ID, Salary_ID, Amount
Run Code Online (Sandbox Code Playgroud)

我想更新Salary的最大表row_id每个salary_id.目前,有各自的许多实例Salary_IDSalaryImport,我只关心最近的一次是由较高的数字表示row_id.

有关如何做到这一点的任何提示?我以为我会运行一个SQL语句,但它分组太多了(我可以从组中删除金额,因为它在select!中):

select max(Row_ID), Salary_ID, Amount
from SalaryImport e
group by  Row_ID, Amount
Run Code Online (Sandbox Code Playgroud)

Pரத*_*ீப் 6

使用ROW_NUMBER窗口功能

;with cte as
(
select row_number() over(partition by Salary_ID order by Row_ID desc) as rn,*
From yourtable
)
Update S
Set TotalAmount = c.Amount
From Salary s join cte c on s.Salary_ID = c.Salary_ID
Where RN = 1
Run Code Online (Sandbox Code Playgroud)