Sql server 在sql server 2012中连接3个表会产生重复记录

Sql server 在sql server 2012中连接3个表会产生重复记录,sql-server,join,sql-server-2012,Sql Server,Join,Sql Server 2012,我有三个表与左外部联接联接,我需要检查两个表中的两列,但在右表中,我从同一列中获取了多个记录,因此我只希望记录存在的值,而不是值“0”记录 我有三张桌子 为此,我做了一个查询,结果几乎在那里,但它返回重复的行。 这是我的SQL查询 SELECT PWA.DT, P.MOULDCODE AS DieNo, T.AssemblyWt AS AWT, T.WaxWt AS WWt, T.CoreWt AS CWT FROM PRCWaxAs

我有三个表与左外部联接联接,我需要检查两个表中的两列,但在右表中,我从同一列中获取了多个记录,因此我只希望记录存在的值,而不是值“0”记录

我有三张桌子

为此,我做了一个查询,结果几乎在那里,但它返回重复的行。 这是我的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表与左侧外部连接我已经比较了两个表中的模具编号和金属代码,如果两者在PRC表中匹配,则可以,但如果不匹配金属代码,则我需要在TDC中将记录的金属代码值显示为0。在输出图像中,红色高亮显示了我不想要的行。 有人能帮我吗?。提前谢谢。

OR条件是提供您不需要的多行输出

试一试,它会给你你想要的

替换此行p.METALCODE=T.METALCODE或T.METALCODE='0'


当p.METALCODE=T.METALCODE时,使用此T.METALCODE=CASE,然后使用p.METALCODE ELSE'0'结束

我在您的输出中没有看到重复项我已经为您完成了,但我强烈建议您不要在一行上编写SQL;它使人无法阅读。很好地使用换行符和空格可以使任何语言(不仅仅是SQL)更易于他人和您自己阅读。关于您的数据,请不要以图片形式提供;那些你要寻求帮助的人如果不抄写就不能使用它们。请花点时间以表格格式文本或DDL和DML语句的形式发布数据。副本在哪里?@Cetin Basoz。。我在输出红色突出显示的行中编辑了我的问题我不想要这是给你不想要的行。P.METALCODE=T.METALCODE或T.METALCODE='0',当P.METALCODE=T.METALCODE时更改为T.METALCODE=CASE,然后P.METALCODE其他'0'结束