2013-11-21 2 views
0

У меня есть таблица с тремя столбцами, которые меня интересуют, это 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 | 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

Единственная реальная проблема, я вижу, с вашими данными, что время, кажется, быть строкой не числом, поэтому для того, чтобы подвести его вам нужно будет преобразовать его в числовой тип данных перед Подводя его.

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

Сказав это, я предлагаю хранить данные в правильном типе данных. Если столбец Time должен содержать числовое значение, введите его в числовой тип данных.

Выбор правильного типа данных поможет вам очистить свой БД.

Смежные вопросы