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

Power Query合并双表:CASE与WHERE用法及替代方案咨询

解决Power Query中按指定供应源合并表的问题

原SQL语句的问题

你写的SQL存在两处关键错误:

  1. CASE语法错误:正确的CASE结构应为CASE WHEN 条件 THEN 结果 ELSE 结果 END,你混淆了两种CASE写法,导致逻辑无法执行。
  2. 未关联零件列表且未筛选目标SOS1:语句没有关联Excel中的零件列表,也没有筛选出符合对应SOS1的记录,无法得到你需要的匹配结果。

方案一:先通过SQL筛选数据库数据,再导入Power Query合并

修改SQL语句,直接从数据库中筛选出符合条件的记录,再导入Power Query与Excel表合并:

USE LIBCOM500
SELECT 
    p.pano20 AS [Part Number],
    p.sos1,
    p.uncs
FROM pcpprms0 p
-- 关联Excel中的零件列表(如果是通过Power Query调用,可替换为实际的表或参数)
INNER JOIN (
    SELECT [Part Number] FROM [你的Excel表名]
) e ON p.pano20 = e.[Part Number]
WHERE
    -- 指定零件匹配SOS1=530,其余匹配SOS1=000
    (p.pano20 IN ('ca2','oa1','oa1p') AND p.sos1 = '530')
    OR (p.pano20 NOT IN ('ca2','oa1','oa1p') AND p.sos1 = '000')

将上述查询结果导入Power Query后,直接与Excel表按Part Number做合并查询,选择需要的字段即可得到目标输出。

方案二:直接在Power Query中处理两个表

如果不想修改SQL,可以直接在Power Query内完成筛选与合并:

  1. 导入两个表:将Excel零件表(Table1)和数据库表(Table2)导入Power Query。
  2. 添加目标SOS1列:
    • 选中Table2,点击「添加列」→「条件列」
    • 设置规则:
      • 条件:[Part Number] 属于 {'ca2','oa1','oa1p'},结果:"530"
      • 否则结果:"000"
    • 将新列命名为Target SOS1
  3. 筛选符合条件的行:筛选Table2中[SOS1] = [Target SOS1]的记录。
  4. 合并表:将处理后的Table2与Table1按Part Number合并,展开需要的字段(SOS1、uncs、Qty Needed)。
  5. 整理输出:删除多余列,调整列顺序,得到最终结果。

示例验证

按上述方法处理后,会得到你期望的输出:

Part NumberSOS1uncsQty Needed
1235302.501
2220003.003

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 10:57:21