sql - 在 SQL 中处理库存波动
问题描述
我目前有一个表格,每 30 分钟记录一次整个设施的库存数量。我需要能够根据上次记录值之间的差异来显示零件编号的波动。因此,例如对于“MAA-0001”部分,如果它在上午 11 点有 100 个,在上午 1130 点有 150 个,我需要它显示“+50”,然后如果它在 1200 点达到 130,我需要它显示该行“- 20"。我只想要基于它最后记录的记录时间而不是滚动累积量的波动。
为值设置表的代码:
create table #temptablei (partnum nvarchar(50), loc nvarchar(50), logtime
smalldatetime, amt float)
insert into #temptablei (partnum,loc,logtime,amt)
VALUES
('maa-0001','whs1','2018-11-29 11:00:00',288),
('maa-0001','whs1','2018-11-29 11:30:00',253),
('maa-0001','whs1','2018-11-29 12:00:00',294),
('maa-0001','whs1','2018-11-29 12:30:00',181),
('maa-0001','whs1','2018-11-29 13:00:00',200),
('maa-0001','whs1','2018-11-29 13:30:00',218)
select * from #temptablei
我已经尝试使用其他示例中的 LAG 和 LEAD 命令,但它似乎只是给出了滚动累积量。我需要一些只显示最新记录值以及它与零件编号最后记录值之间的差异的东西。任何帮助将不胜感激!
解决方案
我希望答案是:
select t.*,
(amt - lag(amt) over (partition by partnum, loc order by logtime)) as diff
from #temptablei t;
这是一个 db<>fiddle。
要显示最后两个值,您只需使用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;
推荐阅读
- react-native - 在 react-native-chart-kit 中设置 Y 轴的最小值
- git - 如何将 Gitlab 自我管理的子模块连接到 deepsource.io
- c++ - 将模板化参数包传递给回调函数(也是模板化函数)
- javascript - 合并具有共同键但结构不同的对象数组
- django - 具有不同数据库的同一服务器中的多个 Django 站点
- react-native - React Navigation 6 中的深度链接
- sql - 为什么 SQL Server 全文搜索索引 SCR 或 SUR 首字母缩写词后跟一个数字?
- c - 为什么更改没有通过指针分配新值
- c# - 选择整个对象时,EF Core 无法将类型为“System.DBNull”的对象转换为类型“System.String”
- arrays - spark scala 将列名映射到值 true 的输出 arraytype 列