2010-03-08 10 views
3

Tableau 1Double de Total Problème

ID | WorkTime 
----------------- 
001 | 10:50:00 
001 | 00:00:00 
002 | .... 

WorkTime est ** varchar type de données * (.

SELECT ID, 
     CONVERT(varchar(10), TotalSeconds1/3600) + ':' + RIGHT('00' + CONVERT(varchar(2), (TotalSeconds1 - TotalSeconds1/3600 * 3600)/60), 2) + ':' + RIGHT('00' + CONVERT(varchar(2), TotalSeconds1 - (TotalSeconds1/3600 * 3600 + (TotalSeconds1 - TotalSeconds1/3600 * 3600)/60 * 60)), 2) AS TotalWork 
From (SELECT ID, 
       SUM(DATEDIFF(second, CONVERT(datetime, '1/1/1900'), 
       CONVERT(datetime, '1/1/1900 ' + WorkTime))) AS TotalSeconds1 
      FROM table1 
     group by ID) AS tab1 
where id = '001' 

La requête ci-dessus montre "doubler le total du temps"

Par exemple

De table1 je veux calculer le total WorkTime, quand je cours la requête ci-dessus il montre

ID WorkTime

001 21:40:00 
002..., 

Mais il faut montrer que cette

ID Worktime 

001 10:50:00 
..., 

Comment éviter la double total de temps de travail. Comment modifier ma requête

Besoin d'aide Recherche

+0

@Gopal, qu'est-il arrivé à la question précédente (en double) que vous avez posée hier? J'ai passé un certain temps dessus et n'est pas supprimé? –

+0

@Philip - L'erreur arrive de manière différente, j'ai finalement découvert l'erreur. Il donne le double du total ce qui signifie 22:00:00 au lieu de 11:00:00. Il y a une erreur dans la requête. – Gopal

+0

Est-ce que le temps de travail est l'heure réelle ou la durée du travail? – Kangkan

Répondre

2

Après avoir créé des tables et l'ajout de données comme décrit dans la question, j'ai toujours la réponse attendue de 10:50:00. Je ne sais pas pourquoi il ne fonctionne pas pour l'OP ...

Pour simplifier la requête et pour améliorer la performance, il pourrait être préférable de modifier la définition de type pour WorkTime de varchar-int. Enregistrez ensuite l'intervalle de travail en secondes totales.

Il serait alors simple de faire la somme des quantités d'intervalle et ensuite d'effectuer un format d'affichage sur la valeur finale. (De préférence dans l'application et non dans la base de données)

+2

Juste testé sur notre système et la requête se comporte comme prévu. OP devrait publier un exemple de travail (aucun), compléter avec la création de la table et l'insertion d'enregistrements. –