2010-04-26 1 views
1

У меня есть таблица, как этотSQL Server «Группировка» для интересного случая

ID ORDER TEAM TIME 
    IL-1 1 A_Team 11 
    IL-1 2 A_Team 3 
    IL-1 3 B_Team 2 
    IL-1 4 A_Team 1 
    IL-1 5 A_Team 1 
    IL-2 1 A_Team 5 
    IL-2 2 C_Team 3 

То, что я хочу группирую те же названные команды, которые также являются последовательными командами (которая в соответствии с колонкой ORDER)

Так результирующая таблица должна выглядеть

IL-1 1 A_Team 14 
IL-1 2 B_Team 2 
IL-1 3 A_Team 2 
IL-2 1 A_Team 5 
IL-2 2 C_Team 3 

Благодаря

Ed it: В зависимости от ответа nang я добавил столбец идентификатора к моей таблице.

ответ

0

В вашем примере есть проблема. Почему строки # 6 и # 2 не являются «последовательными командами»?

1 A_Team 5

2 A_Team 3

Однако, может быть следующее полезно для вас:

select neworder, name, sum([time]) from (
select min(n1.[order]) neworder, n2.[order], n2.name, n2.[time] 
from mytable n1, mytable n2 
where n1.Name = n2.Name 
and n2.[order] >= n1.[order] 
and not exists(select 1 from mytable n3 where n3.name != n1.name and n3.[order] > n1.[order] and n3.[order] < n2.[order]) 
group by n2.[order], n2.name, n2.[time]) x 
group by neworder, name 

Результат:

имя NewOrder (Нет имени столбца)

1 A_Team 19

4 A_Team 2

3 B_Team 2

2 C_Team 3

+0

Для задачи вы упомянули о последовательных команд, я редактировал свой вопрос и добавить поле идентификатора к моему столу, который я не писал прежде чем сделать таблицу более простой, спрашивая. – stckvrflw