2017-10-16 76 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表有可能不包含錯誤的值,則可以稍微修改我的查詢以保留當前值。

相關問題