求一简单自更新....sql

DavidNoWay 2006-10-26 02:43:40
如果有表如下:
code bm total pass
2006-2 01 NULL 1.000
2006-2 02 NULL .700
2006-3 01 NULL 1.000
2006-3 02 NULL 1.000
2006-4 01 NULL .200
2006-4 02 NULL .200
要update total的值使其=小于自身code的pass值的和,如下
2006-2 01 NULL 1.000
2006-2 02 NULL .700
2006-3 01 1 1.000
2006-3 02 0.7 1.000
2006-4 01 2 .200
2006-4 02 1.7 .200

??

...全文
243 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
DavidNoWay 2006-10-26
  • 打赏
  • 举报
回复
(沙果) 求出来total是一样的数据
DavidNoWay 2006-10-26
  • 打赏
  • 举报
回复
如果有表如下:
code bm total pass
2006-2 01 NULL 1.000
2006-2 02 NULL .700
2006-3 01 NULL 1.000
2006-3 02 NULL 1.000
2006-4 01 NULL .200
2006-4 02 NULL .200
得到
2006-2 01 NULL 1.000
2006-2 02 NULL .700
2006-3 01 1 1.000
2006-3 02 0.7 1.000
2006-4 01 2 .200
2006-4 02 1.7 .200

code是月份,就是total等于上月的pass的累积和:
怎么写?
DavidNoWay 2006-10-26
  • 打赏
  • 举报
回复
呵呵,是说得不太明白.
WangZWang 2006-10-26
  • 打赏
  • 举报
回复
update a set a.total=(select sum(pass) from 表 where bm=a.bm and code<a.code)
from 表 as a
gahade 2006-10-26
  • 打赏
  • 举报
回复
按楼主的说法,给的结果不对啊?
gahade 2006-10-26
  • 打赏
  • 举报
回复
create table #(code varchar(10),bm varchar(10),total numeric(20,6),pass numeric(20,6))
insert into #
select '2006-2','01',NULL,1.000
union all select '2006-2','02',NULL,.700
union all select '2006-3','01',NULL,1.000
union all select '2006-3','02',NULL,1.000
union all select '2006-4','01',NULL,.200
union all select '2006-4','02',NULL,.200

update #
set total=(select sum(pass) from # t where t.code<#.code)
from #
select * from #
wym840713 2006-10-26
  • 打赏
  • 举报
回复
total 值随机(其=小于自身code的pass值的和)?
wym840713 2006-10-26
  • 打赏
  • 举报
回复
不清楚什么意思
chenjunjarysky 2006-10-26
  • 打赏
  • 举报
回复
不明白楼主的意思!

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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