你可以附加一个新的数值,以识别每组记录。 这个新值是flag 的累积总和。
select t.*,
(select sum(t2.flag)
from table t2
where t2.record <= t.record
) as grp
from table t;
这是标准的SQL,然后可以在任何查询中使用。 因此,如果你想要第一组,你可以这样做。
select record, flag
from (select t.*,
(select sum(t2.flag)
from table t2
where t2.record <= t.record
) as grp
from table t
where grp = 1
order by record;
SqlFiddle演示:http://sqlfiddle.com/#!3/40bf7/4
EDIT:
你没有提到数据库。 在一些数据库(Oracle、Teradata、DB2、Postgres和SQL Server 2012)中,你有一个累积和。 它通常看起来像这样。