首页 > 解决方案 > SQL - 按日期标记最近的条目

问题描述

我有以下数据。

Clientid  Accountype  Dateapplied
1         Current     01/01/2018
1         Savings     03/01/2018
1         Current     17/01/2018
2         Current     01/04/2018
2         Current     15/04/2018
3         Savings     13/04/2018
3         Savings     15/04/2018
3         Current     14/04/2018

如何在此处为每个客户选择最新的日期条目,其中Accountype = Current. 基本上我希望能够标记每个客户端的最新条目,因此当我可以完成选择时,我会将一个新字段设置为 True。所以我想带回来的结果是:

Clientid  Accountype  Dateapplied
1         Current     17/01/2018
2         Current     15/04/2018
3         Current     14/04/2018

我也尝试过按 ClientID 进行分组,然后选择使用 max,但是无论我尝试什么,我都无法为每个 clientid 挑选出最新的一个。应该很简单,但要绞尽脑汁。

所以尝试了这样的事情但没有奏效。如果帮助任何人,将不胜感激。

select Dateapplied,Clientid, Accountype  
from Clienttable t1
WHERE EXISTS(SELECT 1
     FROM Clienttable t2

     WHERE Accountype  = 'Current'
     and  t2.Clientid = t1.X_Clientid

     GROUP BY t2.Clientid,
              t2.Dateapplied
     HAVING t1.Dateapplied= MAX(t2.Dateapplied))

标签: sqldatemax

解决方案


您不需要使用子查询。只需获取最大值(应用日期)

SELECT ClientId, AccountType, max(dateapplied) dateapplied
from clienttable
where accountType = 'Current'
Group by ClientId, AccountType

推荐阅读