查询 SQL group by 每下一行是否具有相同的值?

Ram*_*ani 0 sql t-sql sql-server gaps-and-islands

如果下一列的值相同的话如何分组,稍后我会计算购买需要多长时间,稍后按组添加

在此输入图像描述

Joh*_*tti 6

这是一个经典的间隙与岛屿问题。

将来,请提供文本形式的示例数据,而不是图像。

例子

with cte as (
    Select *
          ,Grp = row_number() over (order by ID) 
                -row_number() over (partition by BUAH order by ID)
    From  YourTable
)
Select BUAH
      ,Cnt = sum(1)
 From cte
 Group By BUAH,Grp
 Order By min(ID)   --<< Optional
Run Code Online (Sandbox Code Playgroud)

结果

BUAH    Cnt
APEL    2
TOMAT   2
APEL    3
...
Run Code Online (Sandbox Code Playgroud)

  • @RamaDhani,当人们已经回答时,你不能去改变你的问题,这样它就与你原来的帖子完全不同了。您应该恢复更改,接受此答案并提出新问题。以免将来浪费人们的时间! (3认同)