Sql server 不带公共字段的联接表

Sql server 不带公共字段的联接表,sql-server,null,left-join,Sql Server,Null,Left Join,我试图基于表B.Def填充表A.OMkt 我最初的想法是在a.OMkt=B.Zip上使用左连接 但是用“黄色”突出显示的项目总是以空值返回,因为我在表B中没有对应的项目。如果您能提供帮助,我将不胜感激。我希望避免创建另一列,并希望仅使用已存在的列来完成联接 您似乎在寻找一个简单的左连接: SELECT ta.O3Zip, COALESCE(ta.OMkt, tb.Def) OMKt FROM tableA ta LEFT JOIN tableB tb ON ta.O3Zip = tb.zip

我试图基于表B.Def填充表A.OMkt

我最初的想法是在a.OMkt=B.Zip上使用左连接

但是用“黄色”突出显示的项目总是以空值返回,因为我在表B中没有对应的项目。如果您能提供帮助,我将不胜感激。我希望避免创建另一列,并希望仅使用已存在的列来完成联接


您似乎在寻找一个简单的
左连接:

SELECT ta.O3Zip, COALESCE(ta.OMkt, tb.Def) OMKt
FROM tableA ta
LEFT JOIN tableB tb ON ta.O3Zip = tb.zip
此查询将查找
tableB
中的值,将
tableA.O3Zip
列与
tableB.zip
列匹配。当
OMkt
NULL
时,它将被
tableB
中的
Def
值替换(如果可用)

表A左连接A.O3Zip上的表B,类似于B.Zip+“%”都给我一个 不匹配的空值(即A2、B2、V0)

如果您在连接条件中得到一个空值,那么这一定是因为
B.Zip
列中有空格字符

试着这样做:

Table A LEFT JOIN Table B ON A.O3Zip LIKE RTRIM(B.Zip) + '%'

它们变为NULL,因为您使用的是左连接,并且键上的值不匹配。请下次不要将数据作为图像发布,而应将其作为格式化文本发布。谢谢,期望结果背后的逻辑是什么?我假设这是样本数据,而不是真实数据。因此,根据这个例子提出任何建议都可能无法解决您的实际问题。嗨,这是我第一次使用该网站发布问题。所以请容忍我。@TabAlleman我试图根据A.O3Zip和B.Zip之间的匹配来填充OMkt列。基本上,对于605,它将拉入A,但是对于A2J,我得到一个空值,因为A2J不等于A2,只有前两个字符匹配。您希望黄色的字段是什么?或者你想从结果中排除带有黄色字段的3行吗?嗨,我想我可能误解了。OMkt列是我需要填充的列。我正在尝试根据A.O3Zip和B.Zip之间的匹配来填充OMkt列。基本上,对于605,它将引入A,但是对于A2J,我得到一个空值,A2J不等于A2,只有前两个字符match@KruthikaKumaraguru:在这种情况下,您希望执行什么操作,仅匹配前两个字符?如果是,您希望如何处理
tableB
中的多条记录在
zip
中的前两个字符与
tableA.O3Zip
中的相同的情况?对于匹配为3个字符的记录,很好。但是如果没有,那么我需要匹配2个字符。有两个代码我试图使用A.O3Zip=B上的表A左联接表B。Zip表A左联接表B在A.O3Zip上类似于B.Zip+“%”