2010-04-26 8 views
1

J'ai une table comme çaSQL Server « Group By » pour un cas intéressant

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 

Ce que je veux est de regrouper les mêmes équipes nommées qui sont aussi des équipes successives (qui est selon la colonne de commande)

Ainsi, le tableau de résultat devrait ressembler à

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 

Merci

Ed it: Selon la réponse du nang, j'ai ajouté la colonne ID à ma table.

Répondre

0

Il y a un problème dans votre exemple. Pourquoi les lignes 6 et 2 ne devraient-elles pas être des «équipes séquentielles»?

1 A_Team 5

2 A_Team 3

Cependant, peut-être ce qui suit est utile pour vous:

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 

Résultat:

Nom neworder (Aucun nom de colonne)

1 A_Team 19

4 A_Team 2

3 B_Team 2

2 C_Team 3

+0

Pour le problème que vous avez mentionné au sujet des équipes successives, j'ai modifié ma question et ajouter le champ d'ID à ma table, que je n'ai pas écrit avant de rendre la table plus simple en demandant. – stckvrflw