这有点难以解释,但从这个例子中应该很清楚。
表表:
 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)