【发布时间】:2019-08-14 11:30:04
【问题描述】:
我有三个表与左外连接连接,我需要检查两个表中的两列,但在右表中,我从同一列中获得了不止一条记录,所以我只想记录存在的值,不值 '0' 记录。
我有 3 张桌子
为此,我已经使这个查询结果几乎就在那里,但它返回了重复的行。 这是我的 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”。在输出图像红色突出显示的行中我不想要。 任何人都可以帮助我..提前谢谢你。
【问题讨论】:
-
我在你的输出中没有看到重复
-
我已经为您完成了,但我强烈建议您不要将 SQL 写在一行上;它使人无法阅读。 良好使用换行符和空格可以使任何语言(不仅仅是 SQL)更易于他人和您自己阅读。关于您的数据,请不要以图片形式提供;那些你寻求帮助的人不能在没有转录的情况下使用它们。请花时间以表格格式
text或 DDL 和 DML 语句的形式发布您的数据。 -
副本在哪里?
-
@Cetin Basoz .. 我在输出红色突出显示的行中编辑了我不想要的问题
-
这是给你不想要的线路。
(P.METALCODE = T.MetalCode OR T.MetalCode = '0'),改为T.METALCODE = CASE WHEN P.MetalCode = T.MetalCode THEN P.MetalCode ELSE '0' END
标签: sql-server join sql-server-2012