2017-10-16 126 views
0

我有一张名为DWCUST的表,它有各种拼写错误的性别值。 根据GENDERSPELLING表,我想用正确的值替换无效的GENDER值。基于另一张表的数据的更新表

因此,举例来说,如果在dwcust表,上面写着Malegender列中的一个领域,我希望它改为M

这是性别拼写表:

Invalid Value  New_Value 

     MAIL  M 
     WOMAN  F 
     FEM  F 
     FEMALE  F 
     MALE  M 
     GENTLEMAN M 
     MM   M 
     FF   F 
     FEMAIL  F 

这是更新到目前为止,我已经试过了,但我不断收到错误:“GS.NEW_VALUE”无效的标识符。

UPDATE (SELECT DW.GENDER 
FROM DWCUST DW, GENDERSPELLING GS 
WHERE DW.GENDER = GS.INVALID_VALUE) 
SET DW.GENDER = GS.NEW_VALUE; 

回答

0

可以选择使用相关子查询:

UPDATE DWCUST t1 
SET GENDER = (SELECT NEW_VALUE FROM GENDERSPELLING t2 
       WHERE t1.GENDER = t2.INVALID_VALUE) 
WHERE GENDER NOT IN ('M', 'F'); 

这将尝试对任何性别是不是已经MF(接收到的值)进行查找。如果GENDERSPELLING表有可能不包含错误的值,则可以稍微修改我的查询以保留当前值。

相关问题