处理SQL中的库存波动

时间:2018-11-29 20:40:56

标签: sql sql-server tsql

我目前有一个表格,每30分钟记录一次我整个工厂的库存编号。我需要能够根据零件编号的最后记录值之间的差异来显示零件编号的波动。因此,例如对于“ MAA-0001”部分,如果它在上午11点有100,而在1130是150,则我需要它显示“ +50”,然后如果它在1200处有130,则需要为该行显示“- 20“。我只希望波动基于上次记录的记录时间,而不是滚动的累积量。

用于设置值表的代码:

my-configs

在其他示例中,我尝试同时使用LAG和LEAD命令,但是它似乎在提供滚动累积量。我需要一些可以按零件号显示最新记录值以及它与最后记录值之间的差异的东西。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

我希望答案是:

select t.*,
       (amt - lag(amt) over (partition by partnum, loc order by logtime)) as diff
from #temptablei t;

Here是db <>小提琴。

要显示最后两个值,只需使用top (2)

select top (2) t.*,
       (amt - lag(amt) over (partition by partnum, loc order by logtime)) as diff
from #temptablei t
order by logtime desc;