先建表,插入测试数据

--正积分表
CREATE table tb1
([memberId] [nvarchar](50) NOT NULL,[pointProduceTime] [nvarchar](50) NOT NULL,[type] [nvarchar](50) NULL,[point] [int] NULL
)
INSERT INTO tb1 VALUES ('1007307','2017-02-06 00:00:00','1',360)
INSERT INTO tb1 VALUES ('1007307','2017-03-17 00:00:00','1',930)
INSERT INTO tb1 VALUES ('1007307','2017-03-19 00:00:00','2',890)
INSERT INTO tb1 VALUES ('1007307','2017-06-09 21:52:14','1',700)
INSERT INTO tb1 VALUES ('1007307','2017-08-28 22:26:12','1',1090)
INSERT INTO tb1 VALUES ('1007307','2017-10-23 21:16:29','1',1330)--负积分表
CREATE table tb2
([memberId] [nvarchar](50) NOT NULL,[pointProduceTime] [nvarchar](50) NOT NULL,[type] [nvarchar](50) NULL,[point] [int] NULL
)
INSERT INTO tb2 VALUES ('1007307','2017-09-23 21:04:50','1',-1090)
INSERT INTO tb2 VALUES ('1007307','2017-11-10 12:56:21','5',-2500)

表tb1:

表tb2:

在不知道每次需要扣减多少积分的情况下,需使用游标遍历数据

--正积分
SELECT IDENTITY(INT,1,1) as id,memberId,pointProduceTime,type,point,point as lesspoint
INTO #tb1
FROM tb1--负积分
SELECT IDENTITY(INT,1,1) as id,memberId,pointProduceTime,type,point
INTO #tb2
FROM tb2declare @inid int
declare @innum int
declare @indate date
declare @outid int
declare @outnum int
declare @outdate date
DECLARE @lessnum int
--负积分游标
declare xrxc_cursorf cursor
for
select id,pointProduceTime,point from #tb2 order by pointProduceTime
open xrxc_cursorf
fetch next from xrxc_cursorf into @outid,@outdate,@outnum --遍历每行数据
WHILE @@FETCH_STATUS=0
BEGIN--正积分游标declare xrxc_cursorz cursor for select id,pointProduceTime,point,lesspoint from #tb1 where lesspoint>0 order by pointProduceTimeopen xrxc_cursorz fetch next from xrxc_cursorz into @inid,@indate,@innum,@lessnum --遍历每行数据WHILE @@FETCH_STATUS=0BEGIN--方法参考一IF @outnum<=0beginIF @innum >= @outnum*-1beginupdate #tb1 SET lesspoint=@outnum+@innum where id=@inidendelsebeginupdate #tb1 SET lesspoint=0 where id=@inidendSET @outnum = @outnum+@lessnum    endelseupdate #tb1 SET lesspoint=@lessnum where id=@inidfetch next from xrxc_cursorz into @inid,@indate,@innum,@lessnum/*--方法参考二set @outnum=@outnum+@lessnumIF @outnum<=0beginupdate #tb1 SET lesspoint=0 where id=@inidendelsebeginIF @outnum<@innumBEGINupdate #tb1 SET lesspoint=@outnum where id=@inidendendfetch next from xrxc_cursorz into @inid,@indate,@innum,@lessnum*/ENDclose xrxc_cursorzdeallocate xrxc_cursorzfetch next from xrxc_cursorf into @outid,@outdate,@outnum
END
close xrxc_cursorf
deallocate xrxc_cursorf
select * from #tb1
select * from #tb2 DROP TABLE #tb1
DROP TABLE #tb2

结果表:

转载于:https://www.cnblogs.com/hbwy/p/8303292.html

Sql 先进先出计算积分相关推荐

  1. c语言simpson积分计算方法,数值分析复化Simpson积分公式和复化梯形积分公式计算积分的通用程序...

    数值分析复化Simpson积分公式和复化梯形积分公式计算积分的通用程序 数值分析第五次程序作业 PB09001057 孙琪 [问题] 分别编写用复化Simpson积分公式和复化梯形积分公式计算积分的通 ...

  2. c语言龙贝格积分法实验报告,数值作业:龙贝格算法计算积分C语言实现

    数值作业:龙贝格算法计算积分C语言实现 数值作业:龙贝格算法计算积分C语言实现 根据Romberg算法计算定积分,和变步长的Simpson算法的输入都一样.算法基本分析:输入a,b(积分上下限),n为 ...

  3. python怎么算积分_python计算积分

    python有多个方法计算积分,下面介绍其中三个,以下式为例: 方法一:直接用numpy计算 start = 1 stop = 2 length = 101 x = np.linspace(start ...

  4. 一段C#学习代码(实现通过积分的几何意义计算积分)

    2019独角兽企业重金招聘Python工程师标准>>> 1.本段程序实现的功能 1)通过积分的几何意义计算积分:计算函数曲线与坐标轴围成部分的面积,方法为将面积分为小块的矩形,依次计 ...

  5. 用正割对数计算积分的方法

    用正割对数计算积分的方法 下面介绍一种利用正割对数,计算积分的方法. 相关资料下载网址: 链接:https://pan.baidu.com/s/1z3R9b-UmV3AcJKLPFNNT3A?pwd= ...

  6. 在 SQL 中计算总行数的百分比

    很多时候,你会希望知道一行(或一组行)在总行数所占的比重.换句话说,即是一行占总计数的百分比是多少.为了说明这一点,让我们看看以下显示在Navicat Premium 16中的表: 通过结合 coun ...

  7. 简化SQL式计算之行间计算

    在数据库应用开发中,我们经常需要面对复杂的SQL式计算,行间计算就是其中一种,比如用每月的销售额除以上月的销售额,求比上期,或用每月销售额除以去年同月的销售额,求同期比.有些数据库没有提供SQL200 ...

  8. 幂级数展开求积分_[干货]---如何利用留数定理计算积分

    留下来的都是精华. 留数理论的一个重要应用就是用来计算实函数的积分,我们先从复变函数的孤立奇点的分类将起: 定义: 是一个全纯函数: 当存在一个半径 时,有 时.这时称 为复变函数 的一个孤立奇点.现 ...

  9. 通过SQL语句计算两地的经纬度距离

    通过SQL语句计算两地的经纬度距离 一.SQL案例 二.SQL参数说明 成功案例演示(对比腾讯地图): 一.SQL案例 select se.EnterpriseId,se.Code,se.Type,s ...

最新文章

  1. java 中断 继续_中断,继续并在Java循环中标记
  2. cisco 6509交换配置
  3. Android Stdio换源以及配置项目
  4. SVN和Git 介绍,区别,优缺点以及适用范围
  5. idea下快速创建SpringBoot项目
  6. mysql悲观锁关键字_MySQL悲观锁 select for update实现秒杀案例(jfinal框架)
  7. 《第9章 循环结构进阶》
  8. mybatis 控制台打印sql脚本
  9. 95-140-122-源码-transform-算子reduce
  10. long long _int64使用总结
  11. Halcon基于形状的几何定位函数说明
  12. 干货 | 彻底理解ANDROID BINDER通信架构(下)
  13. 【IT之路】Docker系列-CentOS 7 64位镜像下载
  14. yy聊天室-创建登录界面与好友列表界面
  15. 手机中的com.android.provision删除可不可以,Android Provision (Setup Wizard)
  16. oracle am时间,oracle里to_date()如何转换am、pm时间
  17. 开源社与 Dev.Together 2022
  18. oeasy教您玩转linux010206toilet
  19. Spring Boot 学习之路之 Spring Security(二)加入mybatis
  20. Freda的访客 【找规律+快速幂】

热门文章

  1. 大雁塔为什么七层_西安旅游的打卡景点,大雁塔是干嘛的?怎么来的?
  2. 计算机应用基础中什么是桌面,福师《计算机应用基础》在线作业二 Windows中进行系统设置的工具集是 用户可以根据自己的爱好更改显示器 键盘 鼠标器 桌面等硬件的设置...
  3. python内置模块re_Python常用内建模块-re模块(正则表达式)
  4. python中time的用法_python中的计时器timeit的使用方法
  5. 压缩文件夹_怎样压缩文件夹并发送
  6. aix解压tgz_AIX 上压缩与解压缩 各种文件格式原理说明
  7. 铅笔芯为什么点不着?
  8. 2021年春季学期-信号与系统-第二次作业参考答案-第八小题
  9. 增加行星轮减速后机械臂调试
  10. 8月18日 | 智能车竞赛云比赛过半,华南赛区成绩小结