मैं यह मानने जा रहा हूं कि id
अद्वितीय और बढ़ रहा है। आप अलग-अलग पंक्ति संख्याओं का उपयोग करके लगातार मानों की गणना कर सकते हैं। निम्नलिखित सभी अनुक्रमों की गणना करता है:
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;
अगर आप 0s का सबसे लंबा क्रम चाहते हैं:
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