如何将Table1双供应商编号列关联Table2获取对应名称?
问题分析与解决方案
你的问题核心是只关联了一次system.Table2,导致ABALPH只能取到主供应商(PDAN8)的名称,没法同时获取替代供应商(PDANCR)的名称。需要两次连接system.Table2,分别通过主供应商号、替代供应商号关联,同时给两次连接的表设置不同别名做区分。
修正后的SQL代码如下:
SELECT PDDOCO as OrderNumber, PDMCU as Branch, PDAN8 as SupplierNumber, -- 主供应商编号 t2.ABALPH as SupplierName, -- 主供应商名称 PDANCR as AltSupplierNo, -- 替代供应商编号 t3.ABALPH as AltSupplierName -- 替代供应商名称 FROM system.Table1 JOIN system.Table2 t2 ON system.Table1.PDAN8 = t2.Supplier -- 关联主供应商 LEFT JOIN system.Table2 t3 ON system.Table1.PDANCR = t3.Supplier -- 关联替代供应商(用LEFT JOIN避免无替代供应商时丢失整条数据) WHERE PDUOPN > 0;
额外说明:
- 给两次连接的
system.Table2分别设置t2、t3别名,用来区分两次关联的数据源 - 用
LEFT JOIN关联替代供应商是为了兼容部分订单无替代供应商的场景,避免这类订单被过滤;如果确认所有订单都有替代供应商,也可以改用JOIN - 把原代码里的括号注释改成了SQL标准的
--注释,避免出现语法错误
内容的提问来源于stack exchange,提问作者gkaro
相关产品推荐
相关产品推荐

