0

我有三个表与左外连接相连,我需要检查两个表中的两列,但在右表中,我从同一列中获得了不止一条记录,所以我只希望记录存在的值,而不是值' 0'记录。

我有 3 张桌子

这是表1 这是我的第二张桌子 这是我的第三张桌子

为此,我已经使这个查询结果几乎就在那里,但它返回重复的行。这是我的 SQL 查询

SELECT PWA.DT,
       P.MOULDCODE AS DieNo, 
       T.AssemblyWt AS AWT,
       T.WaxWt AS WWt,
       T.CoreWt AS CWT
FROM PRCWaxAss PWA
     LEFT OUTER JOIN PRC P ON PWA.PRCNO = P.PRCNO
     LEFT OUTER JOIN TDCWaxView T ON (P.MOULDCODE = T.DieNo)
                                 AND (P.METALCODE = T.MetalCode
                                   OR T.MetalCode = '0');

这是我的输出 输出

“TDC”表和“PRC”表与左外连接我已经比较了两个表中的“die no”和“metal code”如果两者都在 PRC 表中匹配,那么它可以,但如果不匹配“金属代码”,那么我需要在 TDC 中将记录“金属代码”值显示为“0”。在输出图像红色突出显示的行中我不想要。任何人都可以帮助我..提前谢谢你。

4

1 回答 1

1

OR条件是为您提供您不想要的多行输出。

试试这个,它应该会给你你想要的东西。

替换此行(P.METALCODE = T.MetalCode OR T.MetalCode = '0')

有了这个T.METALCODE = CASE WHEN P.MetalCode = T.MetalCode THEN P.MetalCode ELSE '0' END

于 2019-08-14T12:16:33.747 回答