Я не думаю, что вам нужен ваш стол активности.Этот запрос даст вам необходимую информацию, если пользователь вошел в систему и вышел из нее только один раз:
Select AT.UserId. AT.UserRole, MIN(Activity_Time_Stamp) as LoginTime, MAX(Activity_Time_Stamp) as LogoutTime
from ActivityAuditTrail AT
group by AT.UserId. AT.UserRole
Конечно, этого недостаточно, поэтому вам понадобится способ сгруппировать вход с выходом из системы.Я предполагаю, что именно для этого поле Activity_ID.Таким образом, каждое действие состоит из нескольких контрольных журналов действий, в которых первый - это логин, а последний - выход. В этом случае вы можете запустить это:
Select AT.UserId. AT.UserRole, AT.Activity_ID, MIN(Activity_Time_Stamp) as LoginTime, MAX(Activity_Time_Stamp) as LogoutTime
from ActivityAuditTrail AT
group by AT.UserId. AT.UserRole, AT.Activity_ID
РЕДАКТИРОВАТЬ:
select distinct AT.UserId, AT.UserRole,
(select Activity_Time_Stamp from ActivityAuditTrail where UserId=AT.UserId and Activity_ID=1) as LoginTime,
(select Activity_Time_Stamp from ActivityAuditTrail where UserId=AT.UserId and Activity_ID=2) as LogoutTime
from ActivityAuditTrail AT