我试图更新基础上的MASTER_CUSTOMER
的GPID
字段表DIM_TRADING_ACCOUNTS
的GPID
领域,其中在MASTER_CUSTOMER
的MCUST_CODE
等于DIM_TRADING_ACCOUNTS
的TRADING_CODE
不管我怎么努力,我得到的Oracle SQL更新表基本上每次都会产生语法错误。基于匹配ID
我一直在从this question指导。到目前为止我所做的四次尝试都是在错误之下。有人可以帮助我得到正确的语法的Oracle SQL的工作?
注:我上使用上mcust_code
因为trading_code
字段为全大写
尝试1(错误是:SQL命令不能正确地结束)
UPDATE dim_trading_accounts dta
SET dta.gpid = mc.gpid
FROM master_customer mc
WHERE UPPER(mc.mcust_code) = dta.trading_code;
尝试2(错误是:缺少“SET”关键字)
UPDATE
dim_trading_accounts dta, master_customer mc
SET
dta.gpid = mc.gpid
WHERE
upper(mc.mcust_code) = dta.trading_code;
尝试3(这个返回错误:单行子查询返回多个行)
UPDATE dim_trading_accounts dta
SET dta.gpid = (SELECT mc.gpid
FROM master_customer mc
WHERE dta.trading_code = upper(mc.mcust_code))
WHERE EXISTS (SELECT 1
FROM master_customer mc
WHERE dta.trading_code = upper(mc.mcust_code));
尝试4(误差:错过 “ON” 关键字)
MERGE INTO dim_trading_accounts
USING master_customer
ON dim_trading_accounts.trading_code = upper(master_customer.mcust_code)
WHEN MATCHED THEN
UPDATE
SET dim_trading_accounts.gpid = master_customer.gpid;
是的,我发现这和有趣的事情是,我过滤掉了'mccust_code'多'gpid'而且我仍然得到错误。 *(我将它们过滤掉了,因为我想更新其余部分并手动检查多个)* –
可以显示您正在使用的完整查询吗? –
没关系,我发现了其他两个罪犯,我错过了...... :)感谢您的帮助:)我认为我现在直接得到它:)尽管我没有使用'Max'解决方案,因为我需要更具体地了解什么,我会选择这个答案,因为它让我朝着正确的方向前进。 –