这一列如何计算

lenovore 2013-01-11 10:19:49
开始数据
m1 m2 m3
100 10 NULL
100 10 NULL
100 10 NULL
最终数据
m1 m2 m3
100 10 100-10=90
100 10 90+100-10=180
100 10 180+100-10=270
说明:
m3的值,第一行为m1-m2,其他行的均为上一行的m3+本行的m1-本行的m2

测试数据

if OBJECT_ID('t') is not null
drop table t
go
create table t
(
m1 int,
m2 int,
m3 int
)
go
insert into t values(100,10,null),
(100,10,null),
(100,10,null)
...全文
327 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lenovore 2013-01-11
  • 打赏
  • 举报
回复
晕了,脑子混了,结贴
昵称被占用了 2013-01-11
  • 打赏
  • 举报
回复
更正 declare @m3 int set @m3 = 0 update t set @m3 = @m3 + m1 - m2 ,m3 = @m3 已经测试
  • 打赏
  • 举报
回复

----------------------------------------------------------------
-- Author  :TravyLee(物是人非事事休,欲语泪先流!)
-- Date    :2013-01-11 10:32:21
-- Version:
--      Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) 
--	Jul  9 2008 14:43:34 
--	Copyright (c) 1988-2008 Microsoft Corporation
--	Developer Edition on Windows NT 6.1 <X86> (Build 7601: Service Pack 1)
--
----------------------------------------------------------------
--> 测试数据:[test]
if object_id('[test]') is not null drop table [test]
go 
create table [test]([m1] int,[m2] int,[m3] int)
insert [test]
select 100,10,null union all
select 100,10,null union all
select 100,10,null

select * from [test]
go


alter table test add id  int identity
go


update test
set [m3]=(select SUM([m1]-[m2]) from test b where test.id>=b.id)

alter table test drop column id
select * from test
/*
m1	m2	m3
-----------------------------
100	10	90
100	10	180
100	10	270
*/
lenovore 2013-01-11
  • 打赏
  • 举报
回复
不是 最终是返回一个整个表的
lenovore 2013-01-11
  • 打赏
  • 举报
回复
没人来嘛 我用存储过程写的比较繁琐
昵称被占用了 2013-01-11
  • 打赏
  • 举报
回复
declare @m3 int set @m3 = 0 update t set @m3 = @m3 + m1 - m2 ,m3 - @m3

34,589

社区成员

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

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