这有点难以解释,但从这个例子中应该很清楚。
表表:
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,也应该报告 0,即这些行之间除了 1 之外没有任何东西。
似乎 CTE 必须在这里,但无法弄清楚如何计算 state != 1 的行。任何帮助将不胜感激。
(MS Sql 服务器 2008)