如何通过JOIN关联Table1两列与Table2获取对应描述
双字段关联同一张表获取对应描述的解决方案
你的问题出在只对Table2做了一次关联,只能匹配STAT1对应的描述,STAT2没有和Table2建立关联逻辑,所以需要两次关联同一张Table2,通过别名区分两次关联的匹配关系,就能在单行结果中同时获取两个状态的描述。
基础INNER JOIN实现(仅保留两个状态都有匹配描述的记录)
SELECT t1.VBELN, t1.STAT1, t2a.DESC AS STAT1DESC, t1.STAT2, t2b.DESC AS STAT2DESC FROM Table1 t1 -- 关联STAT1对应的描述 INNER JOIN Table2 t2a ON t1.STAT1 = t2a.STATS -- 关联STAT2对应的描述 INNER JOIN Table2 t2b ON t1.STAT2 = t2b.STATS;
LEFT JOIN实现(保留Table1所有记录,无匹配描述时显示NULL)
如果存在STAT1或STAT2在Table2中没有对应记录的情况,用LEFT JOIN可以避免丢失Table1的数据,还能通过COALESCE函数把NULL替换成自定义文本:
SELECT t1.VBELN, t1.STAT1, COALESCE(t2a.DESC, '无对应描述') AS STAT1DESC, t1.STAT2, COALESCE(t2b.DESC, '无对应描述') AS STAT2DESC FROM Table1 t1 LEFT JOIN Table2 t2a ON t1.STAT1 = t2a.STATS LEFT JOIN Table2 t2b ON t1.STAT2 = t2b.STATS;
内容的提问来源于stack exchange,提问作者isekaid_maou
相关产品推荐
相关产品推荐

