Sql server 将两行合并为一行并对一列求和

Sql server 将两行合并为一行并对一列求和,sql-server,sql-server-2008,Sql Server,Sql Server 2008,这不是询问如何使用SUM()和GROUP BY 我有两排表格 ID VALUE 1 100 1 200 我想要一张表格: ID VALUE 1 300 注意,我想 删除表A中原来的两条记录 并用表A中的新记录替换它们 这与merge功能有关吗 我只想处理tableA,不想创建任何新表。合并怎么样 ;with cte as ( select t.*, row_number() over (partition by id order by id) as rn, s

这不是询问如何使用SUM()和GROUP BY

我有两排表格

ID VALUE
1  100
1  200
我想要一张表格:

ID VALUE
1  300
注意,我想

  • 删除表A中原来的两条记录
  • 并用表A中的新记录替换它们
  • 这与
    merge
    功能有关吗


    我只想处理tableA,不想创建任何新表。

    合并怎么样

    ;with cte as (
        select t.*, 
        row_number() over (partition by id order by id) as rn,
        sum(value) over (partition by id) as total_value
        from your_table t
    )
    merge into cte as t
    using cte as t2
    on (
        t.id = t2.id
        and t.rn = t2.rn
        and t.rn = 1
    )
    when matched then update set t.value = t2.total_value
    when not matched by source then delete;
    

    假设tableA中可能有其他类似行,是否要对tableA中的所有行执行此操作(按ID进行聚集和求和,删除所有组成行)?我认为这与
    合并
    无关
    MERGE
    用于合并两组不同的数据。不,这与
    MERGE
    完全无关。您可以使用
    SUM()
    groupby
    将结果拉入临时表,并使用该临时表删除/更新您的表。@stl是,我想按所有符合条件的行进行聚合,并删除和替换它们。您能使用临时表复制所需数据,而不是删除所需行并插入新数据吗?这是一个不错的解决方案+1@John . . . 谢谢:-)