我有两个表,我想比较信息(为了得到从初始表到另一个我需要通过一个参考表)。我得到的结果,我正在寻找,除非当一个匹配被发现一个额外的数据行被添加(屏幕截图如下)。应该只有4行,我不明白为什么列1第5行中的值不只是添加到列1第4行。
任何帮助都将不胜感激。
代码
Select DISTINCT
CASE
WHEN LIC.ORDER_NUM = LN_STLIC.ORDER_NUMBER THEN LIC.ORDER_NUM
ELSE ''
END 'ORDER Number 1',
LN_STLIC.ORDER_NUMBER 'ORDER Number 2'
from LN_TABLE1 LN_STLIC
LEFT OUTER JOIN LN_REF LN_PDE_RTN on LN_STLIC.LNPID = LN_PDE_RTN.LNPID
LEFT OUTER JOIN LN_TABLE2 LIC on LN_PDE_RTN.ID = LIC.ID
where LIC.ID = '123456'
示例表数据
表1
参考号
表2
结果
2条答案
按热度按时间i7uaboj41#
你的问题令人困惑:
我们可以用ln\u stlic和lic做一个简单的左连接:
如果您想使用lic.id='1234',并且不需要使用distinct,那么执行下面的操作也可以得到相同的结果。
643ylb082#
你已经定义了
Order Number 1
作为所以,你可以合理地推断
Order Number 1
是空白的,因为LIC.ORDER_NUM
不匹配LN_STLIC.ORDER_NUMBER
.你要求对
Order Number 1
以及Order Number 2
. 因此,数据中出现的这两个词的每一个组合,都只会出现一次。因为
LN_TABLE1
对于相同的值有四个不同的订单号LNPID
,您将生成3条空白记录Order Number 1
以及Order Number 2
设置为210414。但是distinct
将只取一个,加上它们匹配的一个(示例中的记录4和5)。你可能得加入
LIC.ORDER_NUM = LN_STLIC.ORDER_NUMBER
为了使订单号彼此匹配,并且仅获取订单号的1条记录210414
.如果我对你想要达到的目标有更多的了解,我可以给你一个更好的问题。