sql - 使用 DAX 基于多对多关系映射值
问题描述
我有一种情况,我需要根据零件和工厂 ID 的组合将供应商值从一个表映射到另一个表。表格如下所示 -
表 A
表 B
现在基于工厂和零件编号 ID,我需要将供应商值从表 A 映射到表 B。
预期输出:
我试图在 DAX 中解决它,因为这两个表都不是基表,它们是作为汇总表派生的。因此,不会出现在 Power Query 的帮助下。
直到现在我还没有在 SQL 中尝试过这个,但是如果有人也可以用 SQL 来帮助我解决这个问题,那就完全可以了。
提前致谢!!
解决方案
如果我理解正确,您需要直接匹配。然后,当事情不匹配时,您想要“对齐”剩余的行。我建议union all
用于此目的:
select a.plant, a.partnumber, a.supplier, b.supplier
from a join
b
on a.plant = b.plant and
a.partnumber = b.partnumber and
a.supplier = b.supplier
union all
select plant, partnumber, max(supplier), max(supplier_b)
from ((select a.plant, a.partnumber, a.supplier, null as supplier_b
row_number() over (partition by plant, partnumber order by supplier) as seqnum
from a
where not exists (select 1
from b
where a.plant = b.plant and
a.partnumber = b.partnumber and
a.supplier = b.supplier
)
) union all
(select b.plant, b.partnumber, null, b.supplier,
row_number() over (partition by plant, partnumber order by supplier) as seqnum
from b
where not exists (select 1
from a
where a.plant = b.plant and
a.partnumber = b.partnumber and
a.supplier = b.supplier
)
)
) ab
group by plant, partnumber, seqnum;
推荐阅读
- python - 如何在 tensorflow 训练期间进行验证?
- node.js - 似乎无法通过 NodeJS 提交到 Google 表单
- google-cloud-platform - Google 计算磁盘 (SSD) 上的速度慢
- button - 亚马逊按钮到 Shopify 产品页面
- java - 使用 KafkaProducer 发送一个 ProducerRecord
- node.js - 数组回调中的附加参数
- google-apps-script - 谷歌表格:自动合并相同的单元格
- python - 在 VS Code 中设置本地项目的 Python 路径而不使用 settings.json 文件
- node.js - 尝试访问 ModelType 类中的函数时出现 TypeError
- python - 用闭包实例化一个新对象