Есть следующая таблица:
id | usr | action | datetime
____________________________________
1 | Иванов | создал | datetime1
2 | Иванов | изменил | datetime2
3 | Петров | изменил | datetime3
4 | Петров | изменил | datetime4
5 | Петров | изменил | datetime5
6 | Сидоров | изменил | datetime6
7 | Сидоров | Подписал | datetime7
Необходимо получить информацию последних действиях. кто и когда последний раз создал, изменил и подписал. т е на выходе должно быть:
1 | Иванов | создал | datetime1
6 | Сидоров | изменил | datetime6
7 | Сидоров | Подписал | datetime7
Т е нужно выбрать макс дату(строку с макс датой) и остальные поля данной строки
Вот такой запрос естественно не работает(column must appear in the GROUP BY clause or be used in an aggregate function):
select max(datetime), usr, action
from table
group by action
Если добавить в group by поле usr, то появляется лишняя группировка.
Вот до чего я дошел, работает верно, но вариант все равно не рабочий:
select *
from table t1
where t1.date in (
select max(t2.date)
from table t2
group by t2.actioncode
)