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_ID中SalaryImport,我只关心最近的一次是由较高的数字表示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)
使用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)