每个id最近的日期

时间:2015-09-03 10:48:21

标签: ms-access-2010 datediff

我正在尝试找到每个ID的最近日期。主列表(T1)上的每个ID可能有多个日期,对于每个我想要在单独的表(T2)上返回最接近的日期。

主要表我需要最接近的日期;

T1

PID ES Date
16  03/09/2009
17  29/07/2009
17  26/01/2012
18  19/02/2010

每个ID有多个条目的表

T2

SERVICEID   PID APPOINTMENT
14          16  03/09/2009
14          16  14/09/2009
14          16  21/09/2009
20          17  22/07/2009
20          17  06/08/2009
20          17  22/10/2009
20          17  24/11/2009
20          17  05/01/2010
38402       17  25/01/2012
38402       17  21/02/2012
38402       17  03/04/2012
38402       17  08/05/2012
17          18  01/10/2009
4982        18  16/02/2010
6499        18  28/04/2010
6499        18  12/05/2010
6499        18  16/06/2010
6499        18  15/07/2010

我想要回归 的 T3

PID ES Date     SERVICEID   APPOINTMENT
16  03/09/2009  14          03/09/2009
17  29/07/2009  20          22/07/2009
17  26/01/2012  38402       25/01/2012
18  19/02/2010  6499        28/04/2010

我看过一个数字,如果使用DATEDIFF,ABS,MIN等同样的问题,但我无法得到适合我想要的东西。我正在使用MSAccess 2010。

1 个答案:

答案 0 :(得分:0)

进行加入,使用WHERE仅返回最低日期。

select t1.PID, t1.ES, t1.Date,
       t2.SERVICEID, t2.APPOINTMENT
from t1 join t2 on t1.pid = t2.pid
where t2.date = (select min(date) from t2
                 where date > t1.date
                   and pid = t1.pid)