説明するのはちょっと難しいですが、この例から明らかなはずです。
テーブル テーブル:
Name State Time
--------------------
A 1 1/4/2012
B 0 1/3/2012
C 0 1/2/2012
D 1 1/1/2012
したいと思う
select * from TABLE where state=1 order by Time desc
さらに、状態 0 で状態 = 1 の行の次の行数を含む「スキップ」列を追加します。つまり、出力は次のようになります。
Name State Time Skipped
A 1 1/4/2012 2 -- 2 rows after A where State != 1
D 1 1/1/2012 0 -- 0 rows after D where State != 1
2 つの連続する行が状態 = 1 にある場合、つまり、これらの行の間に 1 以外の状態にあるものがない場合にも、0 が報告されます。
ここでは CTE が必須のようですが、state != 1 の行をカウントする方法がわかりません。
(MS SQL Server 2008)