2010-05-17 3 views
0

Aidez-moi s'il vous plaît avec une requête. Supposons que nous avons une table avec des colonnes:Requête SQL avec colonne calculée

  • Transaction
  • StartTime
  • EndTime

Maintenant, je besoin d'une requête avec colonne calculée de (valeur = EndTime-Startime). En fait, j'ai besoin de regrouper les utilisateurs (Transaction a un FK pour les utilisateurs) et de les trier par le temps moyen passé pour la transaction.

Répondre

3

Vous devriez regarder dans la fonction DateDiff. Vous n'avez pas spécifié les unités du timespan, donc je supposais secondes dans ma solution:

Select ... 
From dbo.Users As U 
    Join (
      Select T.UserId, Avg(DateDiff(s, T.StartTime, T.EndTime)) As AvgTimespan 
      From dbo.Transactions As T 
      Group By T.UserId 
      ) As Z 
     On Z.UserId = U.Id 
Order By Z.Timespan Desc 
+0

Je me demande si elle est facilement transformables en requête LINQ? – Agzam

5
SELECT u.userid 
     ,AVG(DATEDIFF(second, StartTime, EndTime) AS AvgTime 
FROM trxn AS t 
INNER JOIN users AS u 
    ON trxn.userid = u.userid 
GROUP BY u.userid 
ORDER BY AVG(DATEDIFF(second, StartTime, EndTime) 
Questions connexes