2017-03-23 7 views

答えて

0

私が何をしたいことはsum

SELECT 
RIGHT('0' + CAST (FLOOR(COALESCE (SUM(
     datediff(second, 
       cast('1900-01-01' as datetime), 
       cast(time as datetime) 
       )/3600.0), 0)/60) AS VARCHAR (8)), 2) 
       + ':' + 
       RIGHT('0' + CAST (FLOOR(COALESCE (SUM(
     datediff(second, 
       cast('1900-01-01' as datetime), 
       cast(time as datetime) 
       )/3600.0), 0) % 60) AS VARCHAR (2)), 2) + ':' + 
       RIGHT('0' + CAST (FLOOR((SUM(
     datediff(second, 
       cast('1900-01-01' as datetime), 
       cast(time as datetime) 
       )/3600.0)* 60) % 60) AS VARCHAR (2)), 2) 
      as DecimalHours 
, ID 
FROM #t 
group by ID 
だと思います

私が行ったことは、あなたの時間を小数点に変換してから(今度はSUMを実行できる)、合計を時間フォーマットにフォーマットしました。

+0

デモを参照することができ、どのようにそれを行うには? –

+0

これは時間の合計を返します。あなたはそれを実行しようとしましたか? @デヴィアン –

0

時間を2番目に変換し、合計して再フォーマットすることができます。

SELECT 
    id, 
    CONCAT(
     LPAD(FLOOR(seconds/3600), 2, '0'), ':',   -- hour 
     LPAD(FLOOR((seconds % 3600)/60), 2, '0'), ':', -- minute 
     LPAD(seconds % 60, 2, '0')) as time    -- second 
FROM 
    (SELECT id, 
      SUM(CAST(SUBSTRING(time, 1, 2) AS UNSIGNED) * 3600 
      + CAST(SUBSTRING(time, 4, 2) AS UNSIGNED) * 60 
      + CAST(SUBSTRING(time, 7, 2) AS UNSIGNED)) AS seconds 
    FROM <your table name> 
    GROUP BY id) AS summary 

あなたがここにhttp://rextester.com/INOI78655私だけの時間を合計する必要が

関連する問題