Вы можете использовать OVER PARTITION взять запись с самой последней датой для каждого идентификатора ClientID.
В этом случае, я хотел бы написать:
SELECT g.ClientID,
g.created_on,
g.INFO
FROM (
SELECT ClientID
created_on,
INFO,
row_number() OVER (PARTITION BY ClientID ORDER BY created_on DESC) AS RowNum
FROM Table_G
) AS g
WHERE g.RowNum = 1
подзапроса создает таблицу со всеми столбцами, которые вы хотите, а функция row_number() присваивает каждую запись по row_number. PARTITION BY говорит, что нужно группировать, и ORDER BY говорит, как сортировать внутри этого раздела.
В этом случае вам нужна запись с самой последней датой для каждого идентификатора ClientID. Мы группа по ClientID, сортировать по дате, чтобы назначить номера строк, а затем в главном запросе, мы выбираем только первую строку в каждой группе, используя WHERE g.RowNum = 1
This is a guide for PostreSQL, but it's helped me understand OVER PARTITION.
Что ваш РЕГИСТРИРУЙТЕСЬ вид как? –
Связано ли G_ID с P_ID, или это совпадение? Почему в строке для 7/15/2012 есть INFO = Y? –