Il est assez difficile à expliquer, mais à partir de cet exemple, cela devrait être clair.
Table TABLE:
Nom État Date
--------------------
A 1 1/4/2012
B 0 1/3/2012
C 0 1/2/2012
D 1 1/1/2012
Aimerait:
select * from TABLE where state=1 order by Time desc
plus une colonne supplémentaire 'Skipped' contenant le nombre de lignes après une où l'état=1 en état 0, en d'autres termes la sortie devrait ressembler à ceci :
Nom État Date Skipped
A 1 1/4/2012 2 -- 2 lignes après A où l'état != 1
D 1 1/1/2012 0 -- 0 lignes après D où l'état != 1
0 devrait également être signalé en cas de 2 lignes consécutives où l'état = 1, c'est-à-dire qu'il n'y a rien entre ces lignes dans un état autre que 1.
Il semble que les CTE sont nécessaires ici, mais je ne peux pas trouver comment compter les lignes où l'état != 1. Toute aide sera appréciée.
(MS Sql Server 2008)