【发布时间】:2020-11-05 01:15:45
【问题描述】:
我有两个表我想比较信息(为了从初始表到另一个我需要通过参考表)。 我得到了我正在寻找的结果,除非找到匹配项时添加了额外的数据行(下面的屏幕截图)。应该只有 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'
示例表数据
LN_TABLE1
LN_REF
LN_TABLE2
结果
【问题讨论】:
-
(1) 用您正在使用的数据库标记您的问题。 (2)你是什么意思“添加到”?您正在使用
selectdistinct 并且您将获得不同的行。 (3) 您的where子句将外连接变为内连接,因此您的查询令人困惑。 -
提供一些表的示例数据
-
@GordonLinoff,LN_REF、LN_TABLE1 和 LN_TABLE2 中有多个唯一 ID。为了减少结果的数量,我包含了 WHERE 子句,以便展示一个示例
-
请use text, not images/links, for text--including tables & ERDs。仅将图像用于无法表达为文本或增强文本的内容。在图像中包含图例/键和说明。请通过编辑而不是 cmets 进行澄清。
-
请在代码问题中给出minimal reproducible example--cut & paste & runnable code,包括最小的代表性示例输入为代码;期望和实际输出(包括逐字错误消息);标签和版本;明确的规范和解释。给出尽可能少的代码,即您显示的代码可以通过您显示的代码扩展为不正常的代码。 (调试基础。)对于包含 DBMS 和 DDL(包括约束和索引)和输入为格式化为表的代码的 SQL。 How to Ask 暂停整体目标的工作,将代码砍到第一个表达式,没有给出你期望的内容,说出你期望的内容和原因。
标签: sql sql-server outer-join