当前位置:首页 > 技术心得 > 正文内容

SQL累减语句

xjtudll4年前 (2022-02-07)技术心得8320

https://bbs.csdn.net/topics/70362619

表一
Item Qty
A 10
A 12
A 14
B 13
B 60
C 30
C 40
C 10
表二
Item Qty
A 1000
B 70
C 100
表三
Item Qty Result
A 10 990 =(1000-10)
A 12 978 =(990-12)
A 14 964 =(978-14)
B 13 57 =(70-13)
B 60 -3 =(57-60)
C 30 70 =(100-30)
C 40 30 =(70-40)
C 10 20 =(30-10)

--示例
--示例数据
create table 表一(Item varchar(10),Qty int)
insert 表一 select 'A',10
union all select 'A',12
union all select 'A',14
union all select 'B',13
union all select 'B',60
union all select 'C',30
union all select 'C',40
union all select 'C',10
create table 表二(Item varchar(10),Qty int)
insert 表二 select 'A',1000
union all select 'B',70
union all select 'C',100
go
--查询
select id=identity(int),a.*,Result=b.Qty
into # from 表一 a,表二 b
where a.Item=b.Item
order by a.Item
declare @Item varchar(10),@s int
update # set
@s=case when @Item=Item then @s-Qty else Result-Qty end,
@Item=Item,Result=@s
select * from #
drop table #
go
--删除测试
drop table 表一,表二
/*--结果
Item Qty Result
---------- ----------- -----------
A 10 990
A 12 978
A 14 964
B 13 57
B 60 -3
C 30 70
C 40 30
C 10 20
(所影响的行数为 8 行)
--*/

--示例
--示例数据
create table 表一(Item varchar(10),Qty int)
insert 表一 select 'A',10
union all select 'A',12
union all select 'A',14
union all select 'B',13
union all select 'B',60
union all select 'C',30
union all select 'C',40
union all select 'C',10
create table 表二(Item varchar(10),Qty int)
insert 表二 select 'A',1000
union all select 'B',70
union all select 'C',100
go
--查询
select id=identity(int),* into # from 表一
select a.Item,a.Qty,Result=b.Qty-(select sum(Qty) from # where Item=a.Item and id<=a.id)
from # a,表二 b
where a.Item=b.Item
drop table #
go
--删除测试
drop table 表一,表二
/*--结果
Item Qty Result
---------- ----------- -----------
A 10 990
A 12 978
A 14 964
B 13 57
B 60 -3
C 30 70
C 40 30
C 10 20
(所影响的行数为 8 行)
--*/

扫描二维码推送至手机访问。

版权声明:本文由鸟的天空发布,如需转载请注明出处。

本文链接:http://xjtudll.cn/Exp/632/

标签: SQL
分享给朋友:

“SQL累减语句” 的相关文章

Quartus II计数器仿真:31之后变成字符

Quartus II计数器仿真:31之后变成字符

计数器波形仿真,在执行到31时会突然变成[] ! 之类的符号。如图: 原因: 信号的显示格式选择成了ASCII码,当数值等于ASCII码符号区的时候就会显示为符号了。 解决办法: 1、选择要显示的信号,右键,属性(Properties) 2、将显示格式改成自己所需的,一般是Hexadecimal...

电容主要技术参数

电容主要技术参数

1、标称容值及误差 标称值符合E系列。 2、额定工作电压 电容器中的电介质能够承受的电场强度是有限的,当施加在电容器上的电压超过一定值时,电介质有可能被击穿而损坏。额定工作电压是指,在规定的工作温度范围内,电容器在电路中连续工作而不被击穿的加在电容器上的最大有效值,习惯上叫电容器的耐压。 额定电压通...

Win7 64bit右键添加 显示/隐藏文件+扩展名 及问题解决

目前网上广为流传的 显示/隐藏文件+扩展名有两种方式: 1、小工具 2、修改注册表 第一种方式,找个小工具软件,我找了很多,但都不适合Win7 64bit,XP或Win7 32bit或许适用。关于这个工具的相关介绍及下载,可以参照以下网址: http://www.iplaysof...

Keil  error C272: '__asm' requires src-control to be active 解决办法

Keil error C272: '__asm' requires src-control to be active 解决办法

问题: 在C代码里加入了__asm语句,例如“__asm POP 7”,编译出现Error error C272: '__asm' requires src-control to be active 解决办法: 右键选中该文件----option for file"...

紫外线擦除程序

无意中得知,tenx十速的TM89系列OTP单片机可以用紫外线擦除程序,这下让我们在初期调试程序的时候节省了不少。以前都是用一个demo板,将程序烧到demo板的EEPROM里,来仿真效果。现在就不用这样折腾了,直接烧录进去,觉得程序有bug,就用紫外线擦除程序,重新烧录。 网上搜了搜关于紫外线擦...

Word表格显示/隐藏虚框

Word表格显示/隐藏虚框

Word里,可以将表格的某些行(列)的边框线设置为“无”,但是在编辑界面,还是可以看到边框线的,只是颜色显示为灰色。如果想让那些设置为“无”了的边框线确实不显示,点击“隐藏虚框”就可以了。 这个操作说起来简单,但是得找到在菜单在...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。