Sql server 如何在SQL中分组相邻行并求和数据

Sql server 如何在SQL中分组相邻行并求和数据,sql-server,tsql,group-by,window-functions,gaps-and-islands,Sql Server,Tsql,Group By,Window Functions,Gaps And Islands,我希望对值求和,并将SQL中的相邻行分组,如下所示。我可以知道怎么做吗 我现在的代码: Select ID, Value from Table_1 进一步问题 这个怎么样 这是一个典型的缺口和孤岛问题 首先:请记住,SQL表表示无序的行集。因此,要解决您的问题,您需要一个列来定义表中行的顺序-我假设排序\u id 下面是一种使用行编号()之间的差异来构建具有相同id的相邻行组的方法: select id, sum(value) value from ( selec

我希望对值求和,并将SQL中的相邻行分组,如下所示。我可以知道怎么做吗

我现在的代码:

Select ID, Value from Table_1 

进一步问题

这个怎么样


这是一个典型的缺口和孤岛问题

首先:请记住,SQL表表示无序的行集。因此,要解决您的问题,您需要一个列来定义表中行的顺序-我假设
排序\u id

下面是一种使用
行编号()之间的差异来构建具有相同
id的相邻行组的方法:

select 
    id,
    sum(value) value
from (
    select 
        t.*,
        row_number() over(order by ordering_id) rn1
        row_number() over(partition by id order by ordering_id) rn2
    from mytable t
) t
group by id, rn1 - rn2
如果您希望按每个用户进行此操作:


当我有2个用户时,我可以知道如何修改代码吗?你可以参考更多的截图,请阅读一些关于改进问题的提示。
select 
    user,
    id,
    sum(value) value
from (
    select 
        t.*,
        row_number() over(partition by user order by ordering_id) rn1
        row_number() over(partition by user, id order by ordering_id) rn2
    from mytable t
) t
group by user, id, rn1 - rn2