You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power Query合并两表仅匹配一次唯一值 按订单优先级分配库存实现方法

需求实现逻辑(Power Query 版本)

核心匹配思路

通过给同品类的订单、库存分别生成独立的递增匹配序号,以「零部件ID+匹配序号」为唯一关联条件做左合并,实现高优先级订单优先匹配库存、一一对应无重复、无库存返回空值的效果。

具体操作步骤

第一步:预处理订单表(Orders)

  • 排序:先按零部件ID升序排序,再按优先级升序排序(优先级1为最高,排在最前),可额外增加订单编号排序保证同优先级订单顺序稳定。
  • 生成匹配序号:优先推荐用分组加索引的方式(大数据量下效率更高),公式如下:
= Table.Group(#"排序后的步骤名", {"零部件ID"}, {{"订单数据", each Table.AddIndexColumn(_, "匹配序号", 1, 1)}})

执行后展开「订单数据」列即可得到同零部件下、按优先级排序生成的1、2、3...递增的匹配序号。

第二步:预处理库存表(Stock)

  • 排序:先按零部件ID升序排序,再按你需要的库存取用规则排序(比如先进先出就按入库日期升序,就近取货就按货架编号升序),保证库存顺序符合业务规则。
  • 生成匹配序号:同样用分组加索引的方式生成,公式如下:
= Table.Group(#"排序后的步骤名", {"零部件ID"}, {{"库存数据", each Table.AddIndexColumn(_, "匹配序号", 1, 1)}})

执行后展开「库存数据」列即可得到同零部件下的递增匹配序号。

第三步:合并两张表

  • 选择左外连接模式(Orders表为左表,保证所有订单行都保留),关联条件勾选两个字段:零部件ID、匹配序号。
  • 展开库存表的字段(序列号、货架位置等),没有匹配到库存的订单行对应位置会自动返回空值。

效果验证说明

  • 无重复匹配:同零部件下每个匹配序号唯一对应一条订单、一条库存,不会出现多对多重复关联的问题
  • 优先级正确:订单匹配序号完全按优先级排序生成,高优先级订单序号更小,优先匹配靠前的可用库存
  • 无订单行丢失:左外连接模式保留全部订单行,无库存时仅对应库存字段为空

内容的提问来源于stack exchange,提问作者Luna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 22:36:00