【发布时间】:2019-04-12 12:02:39
【问题描述】:
我们需要分析一个零件的消耗。我拥有的数据来自我们的 ERP 系统。这个想法是在未来库存过多的地方找到“漏洞”。
Part_number Sign Count Date
4711 B 100 12.04.2019
4711 - 2 16.04.2019
4711 - 1 18.04.2019
4711 - 3 01.05.2019
4711 - 5 14.05.2019
4711 - 1 18.05.2019
4711 + 25 23.05.2019
4711 - 7 24.05.2019
4711 - 1 01.06.2019
4711 - 1 14.06.2019
4711 - 6 15.06.2019
4711 + 15 23.07.2019
4711 - 7 24.07.2019
4711 - 3 01.08.2019
4711 - 25 14.08.2019
4711 - 6 15.08.2019
4712 B 10 12.04.2019
4712 - 2 13.04.2019
4712 - 3 14.04.2019
4713 … … …
栏目说明:
- Part_number => 自我解释我猜
- 标志
- “B”当前库存,
- “-”用于构建订单的部分,
- “+”新零件订购和计划到货日期
- 计数 => 数量
- 日期 => 未来的计划日期
我的想法是将数据分成几部分。每当库存发生积极变化时,一个部分就会开始,例如到达的订单,并以库存的下一个积极变化结束。 第一部分和最后一部分是一个例外。第一部分以今天的日期开始,以下一个积极的变化结束。最后一部分从最后一个积极的变化开始,到最后一个数据行结束。
我希望基于上述数据的部分表格看起来像这样。
Part_number Section Date_start Date_end
4711 1 12.04.2019 23.05.2019
4711 2 23.05.2019 23.07.2019
4711 3 23.07.2019 15.08.2019
4712 1 12.04.2019 14.04.2019
要找到“漏洞”,应将计数列相加,结果如下表
Part_number Section Date_start Date_end Sum
4711 1 12.04.2019 23.05.2019 88 <= 100-2-1-3-5-1
4711 2 23.05.2019 23.07.2019 98 <= 88+25-7-1-1-6
4711 3 23.07.2019 15.08.2019 72 <= 98+15-7-3-25-6
4712 1 12.04.2019 14.04.2019 5 <= 10-2-3
我们的数据库服务器是 Microsoft Sql Server 2016。
目前我正在使用游标构造来处理数据并得到我想要的。正如您可能想象的那样,这可能不是最好的方法。我想改进这个查询,并期待我能得到任何提示。
谢谢!
【问题讨论】:
标签: sql sql-server tsql sql-server-2016