电表读数归零回滚SQL处理算法
在采集电表数据的时候,可以发现有些电表设备读数会发生回滚。这时候,如果单纯的累加计算用电量,就会出现负值。当然,这也许和电表的质量有关系。
“RTQty”(当前读到的读数)、“LastQty”(上次读数)、“PrecedingQty”(前次读数)、”ErrorFlag”(错误标示)、”IncreaseQty”(增量读数)、“IncreaseQtyOlder”(前次增量读数)。
--判断错误发生标示位
if @ErrorFlag=0
begin
--错误标示位为0,那么计算本次的增量值
set @IncreaseQty=@ RTQty -@ LastQty;
end
else
begin
--错误标示位为1,
--计算当前值和上次值的增量@IncreaseQty,
--计算当前值和前次值的增量----@IncreaseQtyOlder
set @IncreaseQty= RTQty - LastQty;
set @IncreaseQtyOlder= RTQty -@RTQtyOlder;
if @IncreaseQtyOlder>=0
begin
set @IncreaseQty=@IncreaseQtyOlder
end
end
if @IncreaseQty>=0 ---如果增量不为负数
begin
--更新指定设备的数据点位,上次数值为当前值,更新前次数值为当前值,设置错误标示为0。
update Meter set LastQty =@RTQty, PrecedingQty =@ RTQty,ErrorFlag=0 where MeterNo=@MeterNo
--进行数据的其它计算
end
else
begin
--更新指定设备的数据点位,上次数值为当前值,设置错误标示为1。
update Meter set LastQty =@RTQty,ErrorFlag=1 where MeterNo=@MeterNo
--错误信息插入到警报表
end
电表读数归零回滚SQL处理算法的更多相关文章
- mysql基于binlog回滚工具_flashback(python版本)
update.delete的条件写错甚至没有写,导致数据操作错误,需要恢复被误操作的行记录.这种情形,其实时有发生,可以选择用备份文件+binlog来恢复到测试环境,然后再做数据修复,但是这样 ...
- 【MySQL】通过Binary Log简单实现数据回滚(一)
一.前言 对,没错,我又水了好一阵子,深刻反思寄几.前段时间,工作项目上出于对excel等批量操作可能出现误操作的问题,要求提供一个能够根据操作批次进行数据回滚的能力.在开发的过程中接触到了MySQL ...
- MySQL误操作后如何快速回滚(转)
本文转自http://www.cnblogs.com/dfcao/p/6147970.html#undefined 感谢作者 基本上每个跟数据库打交道的程序员(当然也可能是你同事)都会碰一个问题,My ...
- Entity Framework 6事务回滚
使用EF6你有新的事务处理可以使用类似于: 复制代码 using (var context = new PostEntityContainer()) { using (var dbcxtransact ...
- 解析binlog生成MySQL回滚脚本
如果数据库误操作想恢复数据.可以试试下面这个脚本.前提是执行DML操作. #!/bin/env python #coding:utf-8 #Author: Hogan #Descript : 解析bi ...
- SQL 事务回滚
事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位.通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便服 ...
- sql事务(Transaction)用法介绍及回滚实例
sql事务(Transaction)用法介绍及回滚实例 事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位.通过事务, S ...
- 【转】mysql触发器的实战(触发器执行失败,sql会回滚吗)
1 引言Mysql的触发器和存储过程一样,都是嵌入到mysql的一段程序.触发器是mysql5新增的功能,目前线上凤巢系统.北斗系统以及哥伦布系统使用的数据库均是mysql5.0.45版本,很多程 ...
- DDL, DML不是所有SQL都是可以自动回滚的
因为DDL没有事务性,所以DDL不能回滚. 要实现自动回滚.(begin,commit,rollback),则SQL语句中只能包括DML. 这样,自动化发布就会受限规范格式. 故而,一刀切的办法是,假 ...
随机推荐
- Ubuntu12.10下Python(pyodbc)访问SQL Server解决方案
一.基本原理 请查看这个网址,讲得灰常详细:http://www.jeffkit.info/2010/01/476/ 二.实现步骤 1.安装linux下SQL Server的驱动程序 安装Free ...
- Drools5
参考:https://wenku.baidu.com/view/a6516373f242336c1eb95e7c.html (比较好的 但是是drl 原生的) 参考2:http://asialee ...
- Spring MVC 学习 之 - 配置简单demo
1.环境参数: Maven:3.1.1 JDK :1.6 2.项目文件结构图: 3.各文件配置: 3.1. pom.xml <project xmlns="http://maven. ...
- leetcode203
/** * Definition for singly-linked list. * public class ListNode { * public int val; * public ListNo ...
- spring jpa sqls
package com.example.repository; import java.util.List; import org.springframework.data.jpa.repositor ...
- apache启动不了, 查找错误
今天apache启动不了, 本来以为是端口冲突, 用 cmd-> netstat -aon|findstr "80" 或 tasklist|findstr "80 ...
- c# 之 new 关键字
1.实例化变量 DataTable dt = new DataTable(); 2.调用构造函数 class CoOrds { public int x, y; // 实例构造函数(默认构造函数) ...
- css常用属性总结:文本属性中的text-indent
在网页中的文本格式中最重要的效果之一就是段落的首行文本缩进,尤其在新闻类页面,使用text-indent,任何元素都可以让首行以给定的长度缩进, 长度甚至可以是负数,这一属性的最常用方式就是段落的首行 ...
- java web作用域page request session application
转载自:http://blog.csdn.net/wyd458549392147/article/details/6944481 1.page指当前页面.只在一个jsp页面里有效 . 2.reques ...
- JQuery:选择器、动画、AJAX请求
选择器 1.事件编程与动画效果 一个选择器可以在概念上理解为指针.借助与JQuery库中的选择器$,线程可以获取到界面元素的引用,从而可以调用 ready().click()方法把用户事件和动作方法关 ...