我只是坚持看似简单的东西,但我无法弄清楚语法。我有一张工资表,与费率变化的日期和员工ID有关。每位员工多条记录。
我正在尝试获取最近日期的列表,以及仅在该日期的工资。我试过了: SELECT MAX(Date),Rate,EmpID FROM History
但这不起作用。它似乎返回了每个工资率的记录。
其他人如何有效地做到这一点?
答案 0 :(得分:5)
这会为每个Rate
提供最新的EmpID
。
select [Date],
Rate,
EmpID
from (select [Date],
Rate,
EmpID,
row_number() over(partition by EmpID order by [Date] desc) as rn
from History) as H
where rn = 1
答案 1 :(得分:2)
SELECT Date, Rate, EmpID
FROM History A
WHERE Date = (
SELECT Max(Date)
FROM History B
WHERE A.EmpID = B.EmpId )
答案 2 :(得分:0)
select *
from payrates
where date = (select max(dates)
from payrates);