请教求和更新给表对应字段的方法

BlinkZero 2017-10-20 03:43:56
遇到这么个需求,就是
表S
ID path level amount
A 001 1 0
A1 001001 2 2
A2 001002 2 3
A2a 001002001 3 7
B 002 1 0
B1 002001 2 4
B2 002002 2 5
.
.
.
类似于这种类型结构
ID为主键,path为代码层次结构,三位一级,下级在上级代码后新加三位,每行记录该字段唯一不重复,level是等级,amount是总数,我想把1级单位的下级所有的总数求和更新到1级单位字段,就是A的amount=A1+A2+A2a的amount的和=12,更新后结果是

表S
ID path level amount
A 001 1 12
A1 001001 2 2
A2 001002 2 3
A2a 001002001 3 7
B 002 1 9
B1 002001 2 4
B2 002002 2 5
.
.
.
这种形式,我现在的方法是写了一个循环去加和,数据量很大所以慢,也用了临时表

求问问大神们有没有简单快速的方法解决这个问题求这个和啊,谢谢谢谢
...全文
348 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
BlinkZero 2017-10-23
  • 打赏
  • 举报
回复
引用 1 楼 wmxcn2000 的回复:
update mytable t set amount = (select sum(amount) from mytable where name like t.name + '%') where amount = 0
引用 2 楼 ayalicer 的回复:
update mytable a set amount = (select sum(amount) from mytable b where b.path like a.path + _'%') where level=1
谢谢二位,到单位试了试可以了,十分感谢
  • 打赏
  • 举报
回复
update mytable a set amount = (select sum(amount) from mytable b where b.path like a.path + _'%') where level=1
卖水果的net 2017-10-20
  • 打赏
  • 举报
回复
update mytable t set amount = (select sum(amount) from mytable where name like t.name + '%') where amount = 0

22,294

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧