计算生产出货数据来源于那些工单、那些转道数据?
第一个表生产数据是同一个订单一个项次下开了3个工单3个工单分4次转道(转道的意思是转给物流准备发货了的意思),出货的时候只出了3批就把数据全出完了,第二张图是出货数据,想按照先转道先出的原理把出货数据匹配到生产数据,最终生产如下第三个表,能用python或者sql写出来吗?
https://blog.csdn.net/ZK_J1994/article/details/77717700
不知道你这个问题是否已经解决, 如果还没有解决的话:这道题目可以使用Python或SQL来实现。以下是基本的解决思路:
找到生产数据表和出货数据表的关键字段,将两个表格按照关键字段进行关联,以便进行后续的匹配操作。
对于生产数据,需要将同一个订单按项次开了三个工单的情况进行处理,可以使用group by语句来进行分组,以便后续统计操作。
对于出货数据,需要根据“先装运先出”原则进行排序,可以使用order by语句来实现。
在匹配生产数据和出货数据时,需要考虑转道时间和批次的对应关系。可以使用一些数据处理工具来进行匹配。在这里,我们可以使用pandas库来实现数据的处理。
匹配完成后,将结果保存到第三个表格中。
下面是使用Python和pandas库实现上述任务的代码:
import pandas as pd
# 读取两个表格
data_produce = pd.read_excel('生产数据.xlsx')
data_shipment = pd.read_excel('出货数据.xlsx')
# 对生产数据进行分组
data_produce_grouped = data_produce.groupby(['订单号', '项次'])
# 根据装运时间进行排序,并与生产数据进行匹配
data_shipment_sorted = data_shipment.sort_values(by=['装运时间'])
result = pd.DataFrame()
for (order_no, item), group in data_produce_grouped:
# group表示同一个订单号同一个项次的数据,需要对group进行匹配
for i in range(4):
# 按照顺序取出四个转道的数据
group_subset = group[group['转道编号']==i+1].reset_index()
if len(group_subset) == 0:
continue
# 找到与这个转道时间最近的出货数据
timestamp = group_subset['计划时间'].iloc[-1]
mask = data_shipment_sorted['装运时间']>timestamp
if mask.sum() == 0:
continue
closest_shipment = data_shipment_sorted[mask].iloc[0]
# 将生产数据和出货数据合并并加入到结果中
production_result = group_subset.merge(pd.DataFrame(closest_shipment).T, how='outer')
result = pd.concat([result, production_result])
# 保存结果到第三个表格
result.to_excel('匹配结果.xlsx', index=False)
这段代码使用pandas库来进行数据处理和匹配,并将结果保存到一个新的表格中。注意,这里的代码仅仅是一种解决方案,实际情况中可能需要根据数据的具体情况进行适当调整。