我有一张这样的表:
ID DateValue Amount
-----------------------------
1 2017/08/09 217
1 2017/08/08 204
1 2017/08/07 322
2 2017/08/09 1543
2 2017/08/08 1285
3 2017/08/09 12
4 2017/08/09 347
我只想获取最近的" DateValue"的第一行。值。像这样:
ID DateValue Amount
-----------------------------
1 2017/08/09 217
2 2017/08/09 1543
3 2017/08/09 12
4 2017/08/09 347
我想过使用" MAX"像这样的方法:
SELECT ID, MAX(DateValue), MAX(Amount) FROM [dbo].[MyTable] GROUP BY Id
但是对于ID 1,我得到322,而我应该有217(最近的值)
有没有一种简单的方法来实现我的需要?
答案 0 :(得分:3)
您可以使用 WITH TIES 子句。
Select Top 1 with ties *
From YourTable
Order By Row_Number() over (Partition By Id Order By DateValue Desc)
<强>返回强>
答案 1 :(得分:0)
这也有效,
select ID,DateValue,Amount from
(select ID,DateValue,Amount,ROW_NUMBER() over
(partition by ID order by DateValue Desc) RowNumber
from [dbo].[MyTable]) x
where RowNumber=1