我有一个包含以下数据的视图,它代表了一种2个生产单元格的计划。每个电池都生产由几个部分组成的产品。每个生产单元都可以生产任何产品,但是对于给定的产品,生产周期时间通常会因单元格而异,因为这些单元具有不同的配置(工具,设备,人力等)。
生产按批次进行。每行代表给定部件将在给定单元和给定批次和产品上消耗的时间跨度。例如,批次1由2000件产品1组成,其被安排在单元1上运行,每件的循环时间为0.35分钟。产品1将分别使用以下数量的第1,2和3部分:76,26和2(这些都在下面的前3行中捕获)。
+------+---------+------------------+------------------+-------+--------+---------+------+-------------+-----------+
| Cell | Product | EstStartDate | EstEndDate | Cycle | LotNum | Pending | Part | Consumption | TotalCons |
+------+---------+------------------+------------------+-------+--------+---------+------+-------------+-----------+
| 1 | 1 | 2014-05-27 08:00 | 2014-05-27 19:40 | 0.35 | 1 | 2000 | 1 | 76 | 152000 |
| 1 | 1 | 2014-05-27 08:00 | 2014-05-27 19:40 | 0.35 | 1 | 2000 | 2 | 26 | 52000 |
| 1 | 1 | 2014-05-27 08:00 | 2014-05-27 19:40 | 0.35 | 1 | 2000 | 3 | 2 | 4000 |
| 2 | 2 | 2014-05-27 08:00 | 2014-05-28 04:24 | 0.68 | 2 | 1800 | 1 | 55 | 99000 |
| 2 | 2 | 2014-05-27 08:00 | 2014-05-28 04:24 | 0.68 | 2 | 1800 | 3 | 12 | 21600 |
| 2 | 2 | 2014-05-27 08:00 | 2014-05-28 04:24 | 0.68 | 2 | 1800 | 4 | 16 | 28800 |
| 2 | 2 | 2014-05-27 08:00 | 2014-05-28 04:24 | 0.68 | 2 | 1800 | 5 | 1 | 1800 |
| 1 | 3 | 2014-05-27 19:40 | 2014-05-28 04:54 | 0.47 | 3 | 1200 | 2 | 38 | 45600 |
| 1 | 3 | 2014-05-27 19:40 | 2014-05-28 04:54 | 0.47 | 3 | 1200 | 4 | 21 | 25200 |
| 2 | 1 | 2014-05-28 04:24 | 2014-05-28 10:49 | 0.35 | 4 | 1100 | 1 | 76 | 83600 |
| 2 | 1 | 2014-05-28 04:24 | 2014-05-28 10:49 | 0.35 | 4 | 1100 | 2 | 26 | 28600 |
| 2 | 1 | 2014-05-28 04:24 | 2014-05-28 10:49 | 0.35 | 4 | 1100 | 3 | 2 | 2200 |
+------+---------+------------------+------------------+-------+--------+---------+------+-------------+-----------+
我还有一张表格,显示仓库中的库存情况。每行代表一个容器(盒子)的部件。这个盒子应该被消耗FIFO(这是按容器ID排序)。我想要做的是计算哪个单元格将消耗哪个容器以及何时消耗。
+-----------+------+----------+------+--------------+------------+
| Container | Part | Quantity | Cell | EstStartDate | EstEndDate |
+-----------+------+----------+------+--------------+------------+
| 1 | 1 | 30000 | ?? | ?????? | ?????? |
| 2 | 1 | 30000 | ?? | ?????? | ?????? |
| 3 | 1 | 30000 | ?? | ?????? | ?????? |
| 4 | 1 | 30000 | ?? | ?????? | ?????? |
| 5 | 1 | 30000 | ?? | ?????? | ?????? |
| 6 | 1 | 10000 | ?? | ?????? | ?????? |
| 7 | 1 | 10000 | ?? | ?????? | ?????? |
| 8 | 1 | 10000 | ?? | ?????? | ?????? |
| 9 | 1 | 10000 | ?? | ?????? | ?????? |
| 10 | 1 | 30000 | ?? | ?????? | ?????? |
| 11 | 1 | 30000 | ?? | ?????? | ?????? |
| 12 | 1 | 30000 | ?? | ?????? | ?????? |
| 13 | 2 | 50000 | ?? | ?????? | ?????? |
| 14 | 2 | 25000 | ?? | ?????? | ?????? |
| 15 | 2 | 10000 | ?? | ?????? | ?????? |
| 16 | 2 | 25000 | ?? | ?????? | ?????? |
| 17 | 2 | 25000 | ?? | ?????? | ?????? |
| 18 | 3 | 10000 | ?? | ?????? | ?????? |
| 19 | 3 | 10000 | ?? | ?????? | ?????? |
| 20 | 3 | 10000 | ?? | ?????? | ?????? |
| 21 | 4 | 20000 | ?? | ?????? | ?????? |
| 22 | 4 | 20000 | ?? | ?????? | ?????? |
| 23 | 4 | 20000 | ?? | ?????? | ?????? |
| 24 | 5 | 10000 | ?? | ?????? | ?????? |
+-----------+------+----------+------+--------------+------------+
我一直在用我的大脑燃烧,玩弄窗口功能和运行总计。我知道我可以使用游标执行此操作,但也许可以使用基于集合的查询来执行此操作。
任何人都可以帮忙吗?我正在使用SQL Server 2012。
提前致谢。