SQL — самая последняя отметка времени для каждого пользователя

У меня есть таблица с учетной записью пользователя, текущим статусом учетной записи и меткой времени любых изменений, внесенных в статус. Когда я запускаю следующую команду для двух конкретных учетных записей, она возвращает каждую дату и время, когда произошли изменения, но мне нужны только самые последние дата и время для каждой учетной записи.

Когда я пытаюсь включить группу BY ACCOUNT, я получаю следующую ошибку:

"должен быть сгруппирован или использован в агрегатной функции"

Любая помощь будет высоко оценена.

select ACCOUNT, Status,LAST_UPDATE_TIMESTAMP
from ACCOUNT_ROLE 
where ACCOUNT in (123456789,987654321);

person P.4001    schedule 26.06.2018    source источник
comment
См. здесь   -  person a_horse_with_no_name    schedule 26.06.2018
comment
Какой продукт СУБД вы используете? SQL — это просто язык запросов, а не название конкретного продукта базы данных. Добавьте тег для продукта базы данных, который вы используете postgresql, oracle, sql-server, db2,...   -  person a_horse_with_no_name    schedule 26.06.2018


Ответы (2)


Если вы хотите сгруппировать по ACCOUNT и получить максимальную отметку времени последнего обновления для каждой учетной записи, вы можете попробовать следующий SQL:

select ACCOUNT, MAX(LAST_UPDATE_TIMESTAMP)
    from ACCOUNT_ROLE 
    where ACCOUNT in (123456789,987654321) -- this is an optional filter clause.
    group by ACCOUNT

Вам придется исключить поле STATUS из предложения select.

Предположения: LAST_UPDATE_TIMESTAMP - это поле типа datetime.

person gil.fernandes    schedule 26.06.2018
comment
Правильно, LAST_UPDATE_TIMESTAMP — это дата, когда произошло изменение, на данный момент с моим текущим кодом отображается каждая дата. - person P.4001; 26.06.2018

Я не знаю, почему вы используете предложение GROUP BY. Я думаю, вы пытаетесь отобразить значения, упорядочив ACCOUNT. Если это так, пользователь Заказать АККАУНТ

person Manju    schedule 26.06.2018
comment
выберите ACCOUNT, Status,LAST_UPDATE_TIMESTAMP из ACCOUNT_ROLE, где ACCOUNT в (123456789,987654321) ORDER BY ACCOUNT; - person Manju; 26.06.2018
comment
Есть ли способ уменьшить вывод до самой последней даты? вместо отображения каждой даты изменения для каждой учетной записи. Ниже приведен пример вывода: :16 987654321 АКТИВЕН 25-01-2013 12:42:53 987654321 НИКОГДА 24-05-2012 07:35:34 987654321 АКТИВЕН 26-05-2012 08:56:46 987654321 АКТИВЕН 23-07-2017: 48-07-2017 - person P.4001; 26.06.2018