如何基于两个唯一标识符添加行的值

时间:2013-11-21 13:20:14

标签: sql sql-server

我有一个包含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 |
+------+------+------+

2 个答案:

答案 0 :(得分:3)

我看到你的数据唯一真正的问题是时间似乎是一个字符串而不是一个数字,所以为了SUM它你需要在SUM之前将它转换为数字数据类型。

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

说,我建议将数据保存在正确的数据类型中。如果Time列应该保留数值,请将其设置为数字数据类型。

选择正确的数据类型有助于保持数据库清洁。

答案 1 :(得分:1)

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