S'il vous plaît voir violon: http://sqlfiddle.com/#!6/e6768/2TSQL - Difficile Groupement
J'ai données, comme ci-dessous:
DRIVER DROP
1 1
1 2
1 ReturnToBase
1 4
1 5
1 ReturnToBase
1 6
1 7
2 1
2 2
2 ReturnToBase
2 4
Je suis en train de regrouper mes données, donc pour chaque conducteur, chaque groupe de retour aux bases ont un numéro de groupe.
Ma sortie devrait ressembler à ceci:
DRIVER DROP GROUP
1 1 1
1 2 1
1 ReturnToBase 1
1 4 2
1 5 2
1 ReturnToBase 2
1 6 3
1 7 3
1 ReturnToBase 3
2 1 1
2 2 1
2 ReturnToBase 1
2 4 2
J'ai essayé d'obtenir ce résultat avec une combinaison de fonctions fenêtrées mais que je suis miles au large jusqu'à
Voici ce que j'avais si loin, il n'est pas censé être fonctionnel J'essayais de comprendre comment cela pourrait être fait, si c'est même possible.
SELECT
ROW_NUMBER() OVER (Partition BY Driver order by Driver Desc) rownum,
Count(1) OVER (Partition By Driver Order By Driver Desc) counter,
Count
DropNo,
Driver,
CASE DropNo
WHEN 'ReturnToBase' THEN 1 ELSE 0 END AS EnumerateRound
FROM
Rounds
Pouvez-vous s'il vous plaît ajouter le SQL que vous avez essayé jusqu'à présent. On dirait que Row_Number devrait tenir ici – Mark
Vous cherchez une sorte d'expression récurrente de table commune LEAD LAG pour accomplir ceci. – saarrrr
Il y a aussi un identifiant séquentiel, désolé j'aurais dû l'inclure dans l'exemple. –