
你需要知道在mysql数据库中是没有行,这一概念的。所以说,你让下一行减去上一行这个本身就是不成立的。处理的办法是把数据输出之后,用程序比如PHP。等等进行处理输出。单独用sql是无法实现的。
select ano,asumamt-bamt
from table1 as a
,(
select no, sum(amt) as amt
from table2
group by no
) as b
where ano = bno
数据库对数据是按行为单位,对列进行查询、运算等等 *** 作进行投影的。
如果你想对同张表的两行数据对应相减,你应该让表自连接,连接条件就是你说的对应关系,然后连接后就变成一行,数值变为两列,就可以运算了
示例:
select acnt-bcnt
from my_table a,my_table b
where 对应关系;
UPDATE
A
SET
A数量 = A数量 - B退货数量
FROM
A JOIN B
ON (A物料编号 = B物料编号);
上面这种2表关联更新写法
对于 A 表 与 B 表, 是 1对1 的情况下, 是没有问题的。
对于 A 表与 B 表, 是 1对多的情况下, 就没有测试过了。
DECLARE @result INT
IF (需求量>库存量)
BEGIN
SET @result=需求量-库存量
SELECT @result
END
表结构? 测试数据?
按哪一列排序?
测试数据
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 行受影响)
现在的人怎么连问题都懒得描述清啊:(
你是做算术减法、还是集合减(去除另一表有的记录)?
1、前者用运算符号-,但要记录匹配;
2、后者用NOT
IN
来判定:
DELETE
FROM
TableA
WHERE
ID
NOT
IN
(
SELECT
Id
FROM
TableB
)
说清楚一点:是两个视图中的元组相减还是两个视图中连接后的数据结果相减?
一个关系减一个关系可以用谓词NOT
IN或条件
<>
ANY进行关系 *** 作运算。
两个关系中的数据相减可以连接后(相所要求的条件,比如是同一个人的工资和扣的养老金之类,连接条件就是同一个人的标识,可能是身份z号,职工号什么的)相减,这没有什么啊,两表连接后进行数据 *** 作就可以了!句中一般和一个表中数据的加减没有区别:
select
Agongzi-Byanglao
as
Result,
form
A,B
where
Azhigonghao
=
Bzhigonghao
以上就是关于mysql数据库中如何实现同一列的数据相减(即下一行数据减去上一行数据)全部的内容,包括:mysql数据库中如何实现同一列的数据相减(即下一行数据减去上一行数据)、sql 两表相减语句、请教一个SQL语句的问题,如何进行两行数据对应相减等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)