Tôi sẽ giả định rằng id
là duy nhất và ngày càng tăng. Bạn có thể nhận được số lượng các giá trị liên tiếp bằng cách sử dụng các số hàng khác nhau. Phần sau đếm tất cả các chuỗi:
select grp, value, min(id), max(id), count(*) as cnt
from (select t.*,
(row_number() over (order by id) - row_number() over (partition by value order by id)
) as grp
from table t
) t
group by grp, value;
Nếu bạn muốn chuỗi số 0 dài nhất:
select top 1 grp, value, min(id), max(id), count(*) as cnt
from (select t.*,
(row_number() over (order by id) - row_number() over (partition by value order by id)
) as grp
from table t
) t
group by grp, value
having value = 0
order by count(*) desc