【问题标题】:Retrieve data from changed rows records从更改的行记录中检索数据
【发布时间】:2016-06-29 01:23:43
【问题描述】:

我在 Microsoft SQL Server 2005 Management Studio 工作。我是 T-SQL 新手,我必须做以下报告:

我有一个表 (H2O),其中包含时间戳、pumpstatus、tankVolume 的记录。

每 1 分钟将数据插入 H2O。

我必须对清空水箱进行报告(基于 date1 和 date2 之间的时间戳)。

排空过程开始时的指示器是pumpstatus chages从2到3

清空过程结束时的指示是pumpstatus从3变为2

感谢您的帮助!

【问题讨论】:

    标签: sql tsql sql-server-2005


    【解决方案1】:

    试试这个:

    ;WITH cte (dt, st, v) AS 
    (SELECT timestamp AS dt, status AS st, volume AS v
    FROM h2o)
    SELECT DISTINCT h.timestamp
    , h.status
    , h.volume
    FROM cte c
    INNER JOIN h20 h ON h.dt > c.dt AND ((c.st = 2 AND h.status = 3) OR (c.st = 3 AND h.status = 2))
    

    您可以使用时间戳和状态列以及高于上一条记录的日期以及状态从 2 变为 3 或从 3 变为 2 时加入自身。

    【讨论】:

      【解决方案2】:
         ;WITH cte ([emptying time], [Initial Volume], Volume) AS 
              (SELECT      (SELECT TOP 1 H2O_1.[timestamp]
               FROM        [H2O] H2O_1
               WHERE       H2O_1.[H2O_TOOLS_P2_JY_TREND_VAL0] = 2 
               AND         H2O_1.[timestamp] < H2O_2.[timestamp]) AS [emptying time],
              (SELECT TOP 1 H2O_1.H2O_LT301_VOL_VAL0
               FROM       [H2O] H2O_1
               WHERE      H2O_1.[H2O_TOOLS_P2_JY_TREND_VAL0] = 2 
               AND        H2O_1.[timestamp] < H2O_2.[timestamp]) AS [Initial Volume],
               H2O_2.H2O_LT301_VOL_VAL0 As Volume         
      
               FROM        [H2O] H2O_2
               WHERE       H2O_2.H2O_TOOLS_P2_JY_TREND_VAL0 = 3
              )
         Select  Distinct c.[emptying time],
                   max(c.[Initial Volume]) as [Initial Volume],                
                   min(c.Volume) as [Final Volume],
                   (max(c.[Initial Volume]) - min(c.Volume)) as [Emptying volume]
         from cte c
         group by  c.[emptying time]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-18
        • 2010-10-15
        • 1970-01-01
        • 2011-08-22
        相关资源
        最近更新 更多