我有一个 SQL Server 表,其中包含这样的列,但只填充了 Salary_ID
列:
Name: Salary
Salary_ID, TotalAmount
我有另一个具有这种格式的 SQL Server 表,并且填充了所有列:
Name: SalaryImport
Row_ID, Salary_ID, Amount
我正在尝试使用每个 salary_id
的最大 row_id
更新 Salary
表。目前,SalaryImport
中的每个 Salary_ID
都有很多实例,我只关心最近的一个,它由较高的数字 row_id
表示。
关于如何做到这一点的任何提示?我想我会运行一个 SQL 语句,但它分组太多(我可以从组中删除数量,因为它在选择中!):
select max(Row_ID), Salary_ID, Amount
from SalaryImport e
group by Row_ID, Amount
最佳答案
使用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
关于SQL Server - 使用 max 和 group by 更新语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40489987/