sql-server - 使用 CTE 删除重复项时,有什么方法可以对重复行求和?
问题描述
我有一个包含重复的表ItemId
。我正在使用CTE
删除重复记录并为每个项目只保留一条记录。我能够使用以下查询成功实现这一里程碑:
Create procedure sp_SumSameItems
as
begin
with cte as (select a.Id,a.ItemId,Qty, QtyPrice,
ROW_NUMBER() OVER(PARTITION by ItemId ORDER BY Id) AS rn from tblTest a)
delete x from tblTest x Join cte On x.Id = cte.Id where cte.rn > 1
end
实际的问题是我想Sum
在删除重复记录之前Qty
。QtyPrice
我应该在哪里添加Sum
功能?
问题说明:
解决方案
你不能使用update
withdelete
语句,你需要update
before :
update t
set t.qty = (select sum(t1.qty) from table t1 where t1.itemid = t.itemid);
推荐阅读
- azure - Microsoft.StorageSync 频繁发起 Returns Storage Account SAS Token 操作
- scala - Is ScalaJS v1.2.0 compatible with IE 11?
- javascript - 如何使用 JavaScript 在 Android 设备上的网络浏览器上检测 Caps Lock 是否打开?
- python - 将 php 值作为 sys.argv 传递给 python
- python - 验证失败 csrf
- android - 没有操作栏的片段之间的向上按钮(后退按钮)
- django - API 响应显示带有 PUT/PATCH 请求的过时数据
- javascript - 按标题名称过滤表列
- excel - excel日期时间公式问题
- java - 将滤镜效果添加到 BufferedImage 的高效快捷方式