表结构? 测试数据?
按哪一列排序?
测试数据
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语句两个日期、时间字段相减得到天数小时分秒的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)