SQL Server - 获取与日期条件匹配的第一行

时间:2017-08-09 21:51:52

标签: sql sql-server tsql aggregate-functions

我有一张这样的表:

 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(最近的值)

有没有一种简单的方法来实现我的需要?

2 个答案:

答案 0 :(得分:3)

您可以使用 WITH TIES 子句。

Select Top 1 with ties *
 From  YourTable
 Order By Row_Number() over (Partition By Id Order By DateValue Desc)

<强>返回

enter image description here

答案 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