2009-10-02 8 views
0

En utilisant SQLServer 2000Comment rendre total?

Comment faire un total de valeur INTIME

Table 1 
    InTime 
    02:00:48 
    22:00:22 
    ....., 

INTIME Datatype est varchar

02:00:12 - (HH:MM:SS) 

Avant essayé dans l'accès 2003

select format(Int(24*sum(Intime)), '0') & format(sum(Intime) , ':ss') AS totaltime from table1 

Au-dessus de la requête fonctionne parfaitement dans Access 2003

Comment faire un total de Intime en SQL?

attendu Sortie

Intime 

24:01:00 

ainsi de suite ...,

besoin Interrogation aider

+0

Êtes-vous sûr que inTime est un varchar? Si oui, comment pouvez-vous le résumer? –

+0

Avant de faire total (intime) dans Access, maintenant ça marche. Comment puis-je faire un total de intime dans Sql – Gopal

+2

Je crois que le résultat correct devrait être 24:01:10, sauf si vous prévoyez de toujours arrondir à la minute près (48 + 22 = 70 secondes) ... – RedFilter

Répondre

1

essayez ceci:

CREATE TABLE #Table1 
(
inTime varchar(8) 
) 

SET NOCOUNT ON 
INSERT INTO #Table1 VALUES('02:00:48') 
INSERT INTO #Table1 VALUES('22:00:22') 
SET NOCOUNT OFF 


SELECT 
    CONVERT(varchar(2),TotalSeconds/3600) 
     +':' 
     +RIGHT('00'+CONVERT(varchar(2),(TotalSeconds-(TotalSeconds/3600*3600))/60),2) 
     +':' 
     +RIGHT('00'+CONVERT(varchar(2),TotalSeconds-((TotalSeconds/3600*3600)+(((TotalSeconds-(TotalSeconds/3600*3600))/60)*60))),2) AS Answer 
     ,DATEADD(second,dt.TotalSeconds,CONVERT(datetime,'1/1/1900')) AS AnswerIncrementingDays 

    FROM (SELECT 
       SUM(DATEDIFF(second,CONVERT(datetime,'1/1/1900'),CONVERT(datetime,'1/1/1900 '+inTime))) AS TotalSeconds 
       FROM #Table1 
     ) dt 

SORTIE:

Answer AnswerIncrementingDays 
-------- ----------------------- 
24:01:10 1900-01-02 00:01:10.000 

(1 row(s) affected) 
+0

Maintenant Obtenir l'heure correcte, mais pourquoi la requête est tellement longue par rapport à l'accès. Il y a une autre requête connexe disponible. – Gopal

0
select right('0' + cast(TotalHours + TotalMinutes/60 as varchar), 2) + ':' + right('0' + cast(TotalMinutes % 60 as varchar), 2) + ':' + right('0' + cast(Seconds as varchar), 2) 
from (
    select TotalHours, TotalMinutes + TotalSeconds/60 as TotalMinutes, TotalSeconds % 60 as Seconds 
    from (
     select 
      TotalHours = SUM(cast(substring(a, 1, 2) as int)), 
      TotalMinutes = SUM(cast(substring(a, 4, 2) as int)), 
      TotalSeconds = SUM(cast(substring(a, 7, 2) as int)) 
     from (
      select '02:00:48' a 
      union 
      select '22:00:22' 
     ) a 
    ) b 
) c 
+0

Mise à jour: ajouté zéros. – RedFilter