Sql 先进先出计算积分
先建表,插入测试数据
--正积分表 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 先进先出计算积分相关推荐
- c语言simpson积分计算方法,数值分析复化Simpson积分公式和复化梯形积分公式计算积分的通用程序...
数值分析复化Simpson积分公式和复化梯形积分公式计算积分的通用程序 数值分析第五次程序作业 PB09001057 孙琪 [问题] 分别编写用复化Simpson积分公式和复化梯形积分公式计算积分的通 ...
- c语言龙贝格积分法实验报告,数值作业:龙贝格算法计算积分C语言实现
数值作业:龙贝格算法计算积分C语言实现 数值作业:龙贝格算法计算积分C语言实现 根据Romberg算法计算定积分,和变步长的Simpson算法的输入都一样.算法基本分析:输入a,b(积分上下限),n为 ...
- python怎么算积分_python计算积分
python有多个方法计算积分,下面介绍其中三个,以下式为例: 方法一:直接用numpy计算 start = 1 stop = 2 length = 101 x = np.linspace(start ...
- 一段C#学习代码(实现通过积分的几何意义计算积分)
2019独角兽企业重金招聘Python工程师标准>>> 1.本段程序实现的功能 1)通过积分的几何意义计算积分:计算函数曲线与坐标轴围成部分的面积,方法为将面积分为小块的矩形,依次计 ...
- 用正割对数计算积分的方法
用正割对数计算积分的方法 下面介绍一种利用正割对数,计算积分的方法. 相关资料下载网址: 链接:https://pan.baidu.com/s/1z3R9b-UmV3AcJKLPFNNT3A?pwd= ...
- 在 SQL 中计算总行数的百分比
很多时候,你会希望知道一行(或一组行)在总行数所占的比重.换句话说,即是一行占总计数的百分比是多少.为了说明这一点,让我们看看以下显示在Navicat Premium 16中的表: 通过结合 coun ...
- 简化SQL式计算之行间计算
在数据库应用开发中,我们经常需要面对复杂的SQL式计算,行间计算就是其中一种,比如用每月的销售额除以上月的销售额,求比上期,或用每月销售额除以去年同月的销售额,求同期比.有些数据库没有提供SQL200 ...
- 幂级数展开求积分_[干货]---如何利用留数定理计算积分
留下来的都是精华. 留数理论的一个重要应用就是用来计算实函数的积分,我们先从复变函数的孤立奇点的分类将起: 定义: 是一个全纯函数: 当存在一个半径 时,有 时.这时称 为复变函数 的一个孤立奇点.现 ...
- 通过SQL语句计算两地的经纬度距离
通过SQL语句计算两地的经纬度距离 一.SQL案例 二.SQL参数说明 成功案例演示(对比腾讯地图): 一.SQL案例 select se.EnterpriseId,se.Code,se.Type,s ...
最新文章
- java 中断 继续_中断,继续并在Java循环中标记
- cisco 6509交换配置
- Android Stdio换源以及配置项目
- SVN和Git 介绍,区别,优缺点以及适用范围
- idea下快速创建SpringBoot项目
- mysql悲观锁关键字_MySQL悲观锁 select for update实现秒杀案例(jfinal框架)
- 《第9章 循环结构进阶》
- mybatis 控制台打印sql脚本
- 95-140-122-源码-transform-算子reduce
- long long _int64使用总结
- Halcon基于形状的几何定位函数说明
- 干货 | 彻底理解ANDROID BINDER通信架构(下)
- 【IT之路】Docker系列-CentOS 7 64位镜像下载
- yy聊天室-创建登录界面与好友列表界面
- 手机中的com.android.provision删除可不可以,Android Provision (Setup Wizard)
- oracle am时间,oracle里to_date()如何转换am、pm时间
- 开源社与 Dev.Together 2022
- oeasy教您玩转linux010206toilet
- Spring Boot 学习之路之 Spring Security(二)加入mybatis
- Freda的访客 【找规律+快速幂】
热门文章
- 大雁塔为什么七层_西安旅游的打卡景点,大雁塔是干嘛的?怎么来的?
- 计算机应用基础中什么是桌面,福师《计算机应用基础》在线作业二 Windows中进行系统设置的工具集是 用户可以根据自己的爱好更改显示器 键盘 鼠标器 桌面等硬件的设置...
- python内置模块re_Python常用内建模块-re模块(正则表达式)
- python中time的用法_python中的计时器timeit的使用方法
- 压缩文件夹_怎样压缩文件夹并发送
- aix解压tgz_AIX 上压缩与解压缩 各种文件格式原理说明
- 铅笔芯为什么点不着?
- 2021年春季学期-信号与系统-第二次作业参考答案-第八小题
- 增加行星轮减速后机械臂调试
- 8月18日 | 智能车竞赛云比赛过半,华南赛区成绩小结