【发布时间】:2012-06-22 01:09:11
【问题描述】:
这有点难以解释,但从这个例子中应该很清楚了。
表表:
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 中 state=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 Server 2008)
【问题讨论】: