【发布时间】:2020-07-07 21:42:03
【问题描述】:
我有一份代表库存更正的记录列表。对于每条记录,我想找到相应的负值记录并了解它们之间的接近程度。
例如,如果给定行的corrected_quantity 为-4。我想找到最近的 +4 行并查找 created_time 列以了解这两个操作之间的时间间隔。
(lag(created_time,1) over (partition by it.product_id,abs(quantity_change),sign(quantity_change) order by created_time asc)) as previous_correction,
(lag(created_time,-1) over (partition by it.product_id,abs(quantity_change),sign(quantity_change) order by created_time asc)) as subsequent_correction
这个滞后函数的问题是它显然将 -4 转换为 +4,因此最终会找到具有 +4 校正数量的行 - 这不是我需要的。
数据看起来像这样:(对不起,我不知道如何将其格式化为表格)
CREATED_TIME QUANTITY_CHANGE
2020-07-07 12:42:59.901 +0000 -12
2020-07-07 12:42:04.916 +0000 12
2020-07-07 11:51:57.236 +0000 40
2020-07-07 11:51:57.223 +0000 -40
2020-07-07 06:46:32.955 +0000 3
2020-07-07 06:46:10.592 +0000 -3
【问题讨论】:
标签: sql datetime window-functions