sql - 合并 TVP + 更新记录时对列求和

标签 sql sql-server merge upsert table-valued-parameters

源表

Id, Name, hits
1   A     10    
1   A     20
1   A     30
2   A     10

目标表

Id, Name, hits
1   A     NULL

合并后

Id, Name, hits
1   A     60
2   A     10

以上可能吗?使用合并语句?

最佳答案

尝试以下

MERGE     targetTable AS [pi]
USING     ( 
               SELECT id,name,sum(hits) as hits from sourcetable
               GROUP BY id,name
          ) AS src (id,name,hits) ON src.id= [pi].id and scr.name=pi.name
WHEN      MATCHED 
               THEN UPDATE SET [pi].hits= src.hits
WHEN      NOT MATCHED 
               THEN INSERT values (src.id, src.name,hits)

关于sql - 合并 TVP + 更新记录时对列求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52889387/

相关文章:

mysql - SQL 查询结果到 XML - Orders, OrderDetails

r - 查找数据框的补集(反连接)

sql - 如何创建以字母开头然后以数字开头的身份?

sql-server - 引用 SQL Server 触发器的更新行

SQL : select data with null value on end date if other record has the same start date

sql-server - 如何在 SQL Server Management Studio 编辑器中搜索 ', ' 并替换为 ', ' <CR><LF>

SQL正则表达式

r - 如何根据一个数据帧中的列的值和R中另一个数据帧的列标题名称有条件地创建新列

ASP.NET SQL 提供程序

SQL 主键,INT 或 GUID 或..?