在SQL中选择最近的日期

时间:2014-07-12 10:04:13

标签: sql date ms-access greatest-n-per-group

我有一张超过150k行和大约40列的表格。有很多重复,大多数行只是日期不同。我想保留具有最新日期的行(某些日期是将来的),其中所有其他列都是相同的。 我正在使用Access数据库。

粗略地说,表格如下:

Supplier code, Contract number, Incoterms, Currency, Price, First day of validity, Last day of validity
--------------------------
47650          2806751M         DDA        EUR       0.01   01/03/2010             31/12/2012
47650          2806751M         DDA        EUR       0.02   01/01/2013             31/12/2014
47650          2806751M         DDA        EUR       0.03   01/01/2015             31/12/2016
47650          2806751M         DDA        EUR       0.04   01/01/2017             31/12/2019

所有这些列都包含几乎相同的数据,但合同的有效期是重要的变量,因为它决定了价格。这就是为什么我要保留包含最新日期的行。

1 个答案:

答案 0 :(得分:1)

“所有其他列都相同”:这会转换为所有其他列的GROUP BY和日期的MAX:

select all other columns,
   MAX(datecol)
from tab
group by all other columns