zoukankan      html  css  js  c++  java
  • 电表读数归零回滚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

     

     

  • 相关阅读:
    时间复杂度为O(1)的Iveely搜索缓存策略
    数据挖掘十大算法决策树的实现
    编写有效的C# 代码(一)
    数据挖掘十大算法Kmeans之图像区域选择
    asp.net 导出 Excel
    使用XMLSpyDocEditPlugIn2.dll,页面加载失败
    多线程Thread的使用,并使用Thread传参
    ajaxpro.2.dll的使用
    论道WP(二):如何学习WP开发?
    IList<T> 转换成 DataSet
  • 原文地址:https://www.cnblogs.com/ssol/p/3994479.html
Copyright © 2011-2022 走看看