当列小于0时如何计算SQL中的总时间

我有一个SQL表格,看起来像下面的屏幕截图,我正在尝试计算StockLevel列小于或等于0的小时数或天数。

当列小于0时如何计算SQL中的总时间

我尝试从大于0的时间中减去小于等于0的时间,然后一直SUM,但我一直无法做到。

我希望能够通过减去时间戳来添加一个项目少于0的月份的总时数。

DATE_DIFF((CURRENT_DATE),MAX(DATE(ledger.EventTimeStamp)),DAY) AS Days_OutOfStock,

谢谢!

taolongyang1 回答:当列小于0时如何计算SQL中的总时间

您可以使用LAG函数查找每个期间的库存水平:

SELECT ItemID,StockLevel,EventTimeStamp AS lo,LEAD(EventTimeStamp,1) OVER (PARTITION BY itemId ORDER BY EventTimeStamp) AS hi

那应该给你:

ItemID StockLevel lo               hi
536    205        2019-11-05 10:01 null
536    206        2019-11-05 09:37 2019-11-05 10:01

然后您可以使用该输出查找负库存水平和时间量

SELECT ItemId,DATEDIFF(HOUR,hi,lo) AS p
  FROM (
        SELECT ItemID,1) OVER (PARTITION BY itemId ORDER BY EventTimeStamp) AS hi
  )
 WHERE StockLevel < 0

您应该能够通过ItemID按月总计小时数

本文链接:https://www.f2er.com/3160806.html

大家都在问