日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

SQLServer 分組查詢相鄰兩條記錄的時間差

系統 2157 0

首先,我們通過數據庫中表的兩條記錄來引出問題,如下圖

SQLServer 分組查詢相鄰兩條記錄的時間差 SQLServer 分組查詢相鄰兩條記錄的時間差

以上為一個記錄操作記錄的表數據。OrderID為自增長列,后面依次為操作類型,操作時間,操作人。

現在的問題是:要求篩選出數據庫中從“接收”到“送出”的時間差超過2天的全部記錄。即如上圖兩筆單據中,紅色框既是要篩選出的,綠色框為正常過濾的。

為了定位相鄰記錄,方法為給查詢語句的返回記錄加個自動編號列放入臨時表中,再對臨時表進行操作。

View Code
        
          --
        
        
          1.首先查出表中符合條件的所有信息
        
        
          select
        
        
          IDENTITY
        
        (
        
          int
        
        ,
        
          1
        
        ,
        
          1
        
        ) 
        
          as
        
         OIndex,
        
          *
        
        
          into
        
         #temp1 
        
          from
        
        
           操作記錄表


        
        
          where
        
         OrderID 
        
          in
        
         (
        
          select
        
         OrderID 
        
          from
        
         單據表 
        
          where
        
         OrderNo 
        
          like
        
        
          '
        
        
          APP%
        
        
          '
        
        ) 
        
          order
        
        
          by
        
        
           OrderID,OperateDate




        
        
          --
        
        
          2.簽核時間Delay在2~7天之內
        
        
          select
        
         a.OrderID,a.OperateUser,a.OperateName 
        
          into
        
         #temp2 
        
          from
        
         #temp1 a 
        
          inner
        
        
          join
        
        
           #temp1 b 


        
        
          on
        
         a.OrderID
        
          =
        
        b.OrderID 
        
          and
        
         a.OperateUser
        
          =
        
        
          b.OperateUser


        
        
          and
        
         a.OperateType
        
          =
        
        
          '
        
        
          Receive
        
        
          '
        
        
          and
        
         b.OperateType
        
          =
        
        
          '
        
        
          Send
        
        
          '
        
        
          and
        
         b.OIndex 
        
          =
        
         a.OIndex
        
          +
        
        
          1
        
        
          where
        
        
          datediff
        
        (dd,a.operatedate,b.operatedate)
        
          >
        
        
          2
        
        
          and
        
        
          datediff
        
        (dd,a.operatedate,b.operatedate)
        
          <=
        
        
          7
        
        
          and
        
         a.operatedate
        
          >=
        
        
          '
        
        
          2012-06-10
        
        
          '
        
        
          group
        
        
          by
        
        
           a.OrderID,a.OperateUser,a.OperateName


        
        
          order
        
        
          by
        
        
           a.OrderID


        
        
          --
        
        
          3.異常單據和異常操作人員信息
        
        
          select
        
        
          *
        
        
          from
        
         #temp2
      

可以看出,關鍵在分組查詢后對數據的比對。

SQLServer 分組查詢相鄰兩條記錄的時間差


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 剑阁县| 虞城县| 沛县| 马鞍山市| 阳原县| 华蓥市| 囊谦县| 平武县| 阿图什市| 抚顺市| 宝清县| 萝北县| 新兴县| 阿拉善右旗| 陆河县| 历史| 永平县| 昆山市| 宁化县| 木里| 石门县| 巴中市| 苏尼特右旗| 龙泉市| 兴宁市| 宜宾县| 苏尼特左旗| 湘潭市| 西乌珠穆沁旗| 全州县| 抚宁县| 乐山市| 甘肃省| 德清县| 德保县| 昆明市| 海南省| 武功县| 余庆县| 体育| 淅川县|