sql2000数据库中如何实现同一列的数据相减(即下一行数据减去上一行数据)

sql2000数据库中如何实现同一列的数据相减(即下一行数据减去上一行数据),第1张

表结构? 测试数据

按哪一列排序?

测试数据

CREATE TABLE temp (

year INT,

salary INT

);

INSERT INTO temp VALUES(2000, 1000);

INSERT INTO temp VALUES(2001, 2000);

INSERT INTO temp VALUES(2002, 3000);

INSERT INTO temp VALUES(2003, 4000);

预期要求结果:

year salary

2000 1000

2001 1000

2002 1000

2003 10000

SELECT

year,

salary - ISNULL((SELECT TOP 1 salary FROM temp t2 WHERE t2year < tempyear ORDER BY year DESC), 0) AS salary

FROM

temp;

go

year salary

----------- -----------

2000 1000

2001 1000

2002 1000

2003 1000

(4 行受影响)

借用一下

update a

set kucun=kucun-(select nvl(sum(chuku),0) from B where aid=bid)

需要进行空值处理

select requestid,userid,workflowid,receivedate,receivetime,operatedate,operatetime,

cast(day as varchar)+'天'+cast((hour-day24) as varchar)+'小时'+

cast((minute-hour60) as varchar)+'分'+

cast((second-minute60) as varchar)+'秒' result

from(

select requestid,userid,workflowid,receivedate,receivetime,operatedate,operatetime,

datediff(d, CONVERT(datetime,receivedate+' '+receivetime,20),

CONVERT(datetime,operatedate+' '+operatetime,20)) day,

datediff(hh, CONVERT(datetime,receivedate+' '+receivetime,20),

CONVERT(datetime,operatedate+' '+operatetime,20)) hour,

datediff(n, CONVERT(datetime,receivedate+' '+receivetime,20),

CONVERT(datetime,operatedate+' '+operatetime,20)) minute,

datediff(s, CONVERT(datetime,receivedate+' '+receivetime,20),

CONVERT(datetime,operatedate+' '+operatetime,20)) second

from workflow_currentoperator

where workflowid=297 and requestid=110215

) t

order by receivedate,receivetime

--1:先查询看是否是你所要的结果

select t1名称,t1数量,t2单价(t1数量-t2数量) as 合计价格

from 表A t1,

表B t2

where t1名称=t2名称

and t1单价=t2单价

--2:更新表A的数据

update t1

set 数量=t1数量-t2数量 ,和合计价格=t2单价(t1数量-t2数量)

from 表A t1,

表B t2

where t1名称=t2名称

and t1单价=t2单价

--如果上面的结果不行就分开写

--先更新数量

update t1

set 数量=t1数量-t2数量

from 表A t1,

表B t2

where t1名称=t2名称

and t1单价=t2单价

--在更新价格

update t1

set 和合计价格=t2单价t1数量

from 表A t1,

表B t2

where t1名称=t2名称

and t1单价=t2单价

因为ACCTD是后面算出来的不在ACCT里面

SELECT ACCTA, ACCTB, ACCTC, ACCTB - ACCTC AS ACCTD, (ACCTB - ACCTC-ACCTA) AS ACCTE FROM ACCT

先按A 然后B 升序排列 再加一个 递增int列

形成一个临时表 再从这个临时表

分组得出 A列 COUNT (2) 和最小主键值(递增int列) 形成一个临时查询表TMP

然后取出TABLE里的A列 去JION 当 TMPCOUNT =2的 A 主键列

如果主键不是最小主键 那么作为被减数 最小的作为减数

可以得出你要的A和D COUNT=1的 直接用 NOW去减

就是把一个字段内两条数据相加对吧那简单啊,用Sql找到记录1再用rs1("字段名")取得记录1中字段A的值,用同样方取得记录2字段A"rs2(字段名)"的值然后,结果(变量名)=rs1(字段名)+rs2(字段名),最后输出结果(变量名)就可以了

首先卖出货物后,货物的数量应该减少,此时应该:数量=数量-售出数量,然后用更新语句将数据库中的数据更新。即update 数量=数量-售出数量。右边的数量是售出前数量,与售出数量相减后重新将值赋给数量,即售出后的数量。

如果是两个字段的话,首先将两个字段分别取出,并分别输出到屏幕,查看结果是不是正确。如果正确,然后将两者相减后的结果赋给一个变量,然后运用update将值更新。

以上就是关于sql2000数据库中如何实现同一列的数据相减(即下一行数据减去上一行数据)全部的内容,包括:sql2000数据库中如何实现同一列的数据相减(即下一行数据减去上一行数据)、oracle两张表里字段相减问题、求教sql语句两个日期、时间字段相减得到天数小时分秒的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10635503.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存