我想更新我的某个表格上的新列,但我不确定如何去解决这个问题。用查询结果更新表格
新列为MARITAL_STATUS,位于SCV_CLEINT_DETAILS表上。此表中的值会从各种来源生成,并且低于这个查询得到我,我要找的值:
SELECT scd.qsclient_id,
scd.system_client_id,
NVL(c.paxus_client_id, c.client_id),
UPPER(NVL(NVL2(c.paxus_client_id, pc.clt_mar_stat, c.maritial_status_code), decode(c.client_type_id, '2000001702', 'C', 'U'))) AS NewMarStatus,
scd.marital_status
FROM scv_client_details scd, client c, paxus_client pc
WHERE scd.system_client_id = to_char(c.client_id)
AND c.paxus_client_id = pc.client(+)
AND UPPER(scd.SYSTEM_INDICATOR) = 'WRITEN'
AND (scd.marital_status <> UPPER(NVL(NVL2(c.paxus_client_id, pc.clt_mar_stat, c.maritial_status_code), decode(c.client_type_id, '2000001702', 'C', 'U'))) OR
scd.marital_status IS NULL)
我想更新与上述NewMarStatus产生价值的新MARITAL_STATUS列。我真的不知道如何编写update语句。
任何帮助真的很感激。
更新联接是可能的,例如,请参见:[Oracle - 具有内部联接的更新语句](http://stackoverflow.com/questions/2446764/oracle-update-statement-with-inner-join)。 –
由于我的marital_status值可能来自客户端表,paxus_client表或基于客户端表中的client_type_id生成,我不知道如何使用连接?任何方式来更新scv_client_details表where marital_status字段是从这个查询的输出匹配从查询中返回的客户端ID也? – mcquaim
使用'MERGE'作为演示在[这个答案](http://stackoverflow.com/a/2446859/119634)。 'MERGE INTO scv_client_details d USING(your_query)v ON v.rowid = d.rowid ...'。 –