SQL - пометка самой последней записи по дате - PullRequest
0 голосов
/ 07 января 2019

У меня есть следующие данные.

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, но что бы я ни пытался, я не могу выбрать последнюю для каждой клиентской группы. Должно быть просто, но ломать голову над этим.

Так что пробовал такие вещи, но не работал. Ценится, если помочь кому-либо.

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))

1 Ответ

0 голосов
/ 07 января 2019

Вам не нужно использовать подзапрос. Просто получите максимум (с указанием даты)

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