2013-11-21 51 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