2017-04-04 33 views
2

我有这个表中的记录如果数值不匹配,我如何计数记录并中断?

No | Part | value | 
------ | ------|------ | 
    1 | A1 | 2 | 
    2 | A1 | 2 | 
    3 | A1 | 1 | 
    4 | A1 | 2 | 
    5 | A1 | 2 | 
    6 | A1 | 2 | 

我能指望最后一个记录和休息/结束算起值不匹配?

例如计数值等于2,计数结果为3

+0

*当值不匹配时* ...也许您的意思是当“值”更改时? –

+0

为什么你需要打破(慢查询/许多记录)?你能证明你到目前为止? –

+0

是@GiorgosBetsos 因为我想得到结果来计算我的Web的一些函数@ RalfdeKleine –

回答

0

我怀疑你的意思是相邻值的计数是相同的。在SQL Server 2005中,您可以使用行号的差异来执行此操作:

select count(*) 
from (select value, (seqnum - seqnum_v), grp, count(*) as cnt 
     from (select t.*, 
        row_number() over (partition by part order by id) as seqnum, 
        row_number() over (partition by part, value order by id) as seqnum_v 
      from t 
      ) t 
     group by value, (seqnum - seqnum_v) 
    ) t; 
+0

我试过这个陈述,但是它的值是2的总和减去1,所以这个陈述的结果是5 –

相关问题