Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 我的数据中有一个输入错误,如何修复它,以便正确连接两个表?_Sql_Sql Server_Join - Fatal编程技术网

Sql 我的数据中有一个输入错误,如何修复它,以便正确连接两个表?

Sql 我的数据中有一个输入错误,如何修复它,以便正确连接两个表?,sql,sql-server,join,Sql,Sql Server,Join,所以,我有一个不寻常的问题。我有两张桌子需要合并。以下是这两种方法的示例: 我想将列DATE、SITA、B、C、Capacity、SEGMENT(来自第一个表)与列DateArrized、SITA、B、C、Rooms、Market_SEGMENT(来自第二个表)连接起来 现在,我最大的问题是在列段的第一个表中有一个输入错误:BAO应该是BOA。因此,任何带有BAO的数据条目都不会与第二个表中的BOA匹配,因此,当我进行连接时,我丢失了数据 我能做些什么来解决这个问题?我可以在连接查询中做些什

所以,我有一个不寻常的问题。我有两张桌子需要合并。以下是这两种方法的示例:

我想将列DATE、SITA、B、C、Capacity、SEGMENT(来自第一个表)与列DateArrized、SITA、B、C、Rooms、Market_SEGMENT(来自第二个表)连接起来

现在,我最大的问题是在列段的第一个表中有一个输入错误:BAO应该是BOA。因此,任何带有BAO的数据条目都不会与第二个表中的BOA匹配,因此,当我进行连接时,我丢失了数据

我能做些什么来解决这个问题?我可以在连接查询中做些什么,以便sql将BAO和BOA视为同一事物吗

我的问题是:

SELECT t1.DATE, t1.SITA, t1.B, t1.C, t1.Capacity, t1.REV, t1.RNS, t1.SEGMENT, t2.Rn, t2.Rev
FROM t1
JOIN t2
ON T1.B = t2.B and t1.C = t2.C and t1.Capacity = t2.Rooms and t1.SEGMENT = t2.Market_segment

感谢您的帮助

在JOIN ON子句或WHERE子句中(定义联接条件的位置),可以指定:

table1.Segment = table2.Market_segment
or (table1.Segment = 'BAO' and table2.Market_segement = 'BOA')

使用此选项并将表替换为表的名称:

UPDATE table SET Market_segment = 'BOA' WHERE Market_segment = 'BAO'; 
然后使用join连接表。

试试这个

SELECT t1.DATE, t1.SITA, t1.B, t1.C, t1.Capacity, t1.REV, t1.RNS, REPLACE(t1.SEGMENT,'BAO','BOA'), t2.Rn, t2.Rev
FROM t1
JOIN t2 ON T1.B = t2.B and t1.C = t2.C and t1.Capacity = t2.Rooms and REPLACE(t1.SEGMENT,'BAO','BOA') = t2.Market_segment;

让我知道这是否适用于您。

为什么您不能简单地使用update语句?更新YourTable set YourColumn='BOA',其中YourColumn='BAO'只需在连接条件下使用替换函数,如果无法更改数据,则替换错误的条目。性能有多重要?在连接条件下如何?在所有的连接条件之后它会继续吗@bave性能是什么意思?@GordonLinoffI没有更新表的权限,因此希望在我的查询中执行此操作!不,真的。一旦你开始对坏数据进行硬编码修复,它什么时候停止?到今年年底,你可能不得不替换十几个“坏数据”值。别这样!另一个论点:您的查询是好的,但数据是坏的。数据必须是固定的,否则此查询和命中此数据库的每个其他查询都必须处理它。如果值不超过三个字符,则有效。如果时间更长,你会遇到(比如)将
TBAO
变成
TBOA
的问题。。。