2010-03-08 99 views
3

表1雙總問題

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

烹飪時間數據類型是VARCHAR ** *(。

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' 

上述查詢是顯示

「的總的時間加倍」 對於實施例

從table1我想計算總工作時間,當我運行上面的查詢它顯示

ID工作時間

001 21:40:00 
002..., 

但它應該表現出這樣的

ID Worktime 

001 10:50:00 
..., 

如何避免雙重總工作時間的。如何修改我的查詢。

需要查詢幫助

+0

@Gopal,你昨天問過的前一個(重複)問題發生了什麼?我花了一些時間,而不是被刪除? – 2010-03-08 04:58:19

+0

@Philip - 錯誤以不同的方式出現,我終於找到了錯誤。這意味着22:00:00而不是11點00:00的總數翻倍。查詢中有錯誤。 – Gopal 2010-03-08 05:02:52

+0

工作時間是一天的實際時間還是工作時間? – Kangkan 2010-03-08 05:09:40

回答

2

創建表,並在問題描述添加數據後,我還有的10:50:00預期的應答。不知道爲什麼它不工作的OP ...

爲了簡化查詢,並提高性能,可能會更好,爲WorkTime類型定義從VARCHAR改變INT。然後將工作間隔保存爲總秒數。

然後,總結間隔量然後在最終值上執行顯示格式會很簡單。 (最好在應用程序中,而不是在數據庫中)

+2

剛剛在我們的系統上進行了測試,查詢的行爲如預期。 OP應該發佈一個(無)工作示例,完成創建表並插入記錄。 – 2010-03-08 07:55:49