Je ne pense pas que vous ayez besoin de votre table d'activité. Cette requête vous donnera wat te dont vous avez besoin si l'utilisateur est connecté et hors du système qu'une seule fois:
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
bien sûr thats pas assez, alors vous aurez besoin d'un moyen de regrouper un login avec une fermeture de session. Je suppose que c'est ce que le champ Activity_ID est pour. Ainsi, chaque activité se compose de plusieurs pistes de vérification d'activité où les sapins est le login et le dernier est logout Dans ce cas, vous pouvez exécuter ceci:
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
EDIT:
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
Ajout d'une nouvelle colonne User_Session dans la table Activity_Audit_Trail – AJ01