在這個SQL我假設列C1是日期
drop table if exists t5;
create table t5 (c1 int primary key, c2 int);
insert into t5 values (1, 1);
insert into t5 values (2, 1);
insert into t5 values (3, 1);
insert into t5 values (4, 0);
insert into t5 values (5, 0);
insert into t5 values (6, 1);
insert into t5 values (7, 0);
insert into t5 values (8, 1);
insert into t5 values (9, 1);
insert into t5 values (10, 1);
select grp, max(cnt) from (
with recursive t(id, cnt, grp) as (
select c1, c2, 1
from t5
where c1 = 1
union all
select c1,
-- if next is 1 increment existing count else set it to zero
case when b.c2 = 1 then cnt+1 else 0 end,
-- if 0 change group else retain group [0 to 1 will retain group]
-- as long as '1' to '0' changes the group we are good
case when b.c2 = 1 then grp else grp+1 end
from t5 b, t
where b.c1 = id + 1
)
select * from t
) t group by grp having max(cnt) > 0 order by grp
輸出
是否有任何其他列指定順序的序列? –
嗨,是的,類似於ORDER BY日期 – Davita
您需要一個指定排序的列。默認情況下,SQL表是無序的。 –