2013-11-21 81 views
0

我有一張表,其中有3列,我感興趣的是他們是Id,Week和Time。 我的選擇將如下所示。如何根據兩個唯一標識符添加行的值

SELECT Id, Week, Time FROM TimeSheet 

這是結果

+------+------+------+ 
| Id | Week | Time | 
+------+------+------+ 
| 1 | 1 | 8.0 | 
| 1 | 1 | 8.0 | 
| 2 | 3 | 8.0 | 
| 2 | 4 | 8.0 | 
| 3 | 5 | 8.0 | 
| 3 | 5 | 3.0 | 
| 3 | 5 | 8.0 | 
| 3 | 5 | 8.0 | 
+------+------+------+ 

,我想結果是有它的,時間是每週加在一起ID和周排序的,這樣我可以看到每個ID多少工作每個星期。 我真的不知道如何實現這一點,它不是開發人員。

+------+------+------+ 
| Id | Week | Time | 
+------+------+------+ 
| 1 | 1 | 16.0 | 
| 2 | 3 | 8.0 | 
| 2 | 4 | 8.0 | 
| 3 | 5 | 27.0 | 
+------+------+------+ 
+0

什麼數據類型是「時間」?逗號分隔似乎很奇怪,並且它是左對齊的(通常是varchar) – xQbert

+0

如果它是數字並且它實際工作,請不要使用'CONVERT',因爲它將會是開銷:) –

+0

數字數據類型不會接受逗號? – Mari

回答

3

唯一真正的問題,我與您的數據看到的是,時間似乎是一個字符串的不是一個數字,所以爲了要總結它,你將需要SUMing之前將其轉換爲數字數據類型。

SELECT Id, 
     Week, 
     SUM(CONVERT(FLOAT,REPLACE(Time,',','.'))) 
FROM TimeSheet 
GROUP BY Id, Week 

說了這麼多,我建議保持您的數據在正確的數據類型。如果Time列應該保留數字值,請將其設置爲數字數據類型。

選擇正確的數據類型將幫助您保持數據庫清潔。

1
SELECT Id, Week, SUM(Time) 
FROM TimeSheet 
GROUP BY Id, Week