Je tente de mettre à jour le champ GPID
de la table DIM_TRADING_ACCOUNTS
en fonction du champ GPID
de MASTER_CUSTOMER
où le MCUST_CODE
dans MASTER_CUSTOMER
est égale à la TRADING_CODE
de DIM_TRADING_ACCOUNTS
et peu importe ce que j'essaie, je reçois ce qui revient essentiellement à une erreur de syntaxe à chaque fois. J'ai suivi les conseils de this question. Les quatre tentatives que j'ai faites jusqu'ici sont ci-dessous avec des erreurs. Quelqu'un peut-il m'aider s'il vous plaît à obtenir la syntaxe appropriée pour Oracle SQL qui fonctionne?Oracle SQL Update Table basées sur la correspondance ID
Note: J'utilise supérieur sur mcust_code
car le champ trading_code
est tout en majuscules
Tentative 1(erreur: commande SQL pas correctement terminé)
UPDATE dim_trading_accounts dta
SET dta.gpid = mc.gpid
FROM master_customer mc
WHERE UPPER(mc.mcust_code) = dta.trading_code;
Tentative 2(l'erreur est: mot clé "SET" manquant)
UPDATE
dim_trading_accounts dta, master_customer mc
SET
dta.gpid = mc.gpid
WHERE
upper(mc.mcust_code) = dta.trading_code;
Tentative 3(celui-ci renvoie l'erreur: sous-requête une seule rangée retourne plus d'une ligne)
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));
Tentative 4(erreur: manque "ON" mot-clé)
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;
oui, je découvre cela et la chose intéressante est que je filtré le '' mccust_code' avec plusieurs gpid' et j'ai toujours l'erreur. * (Je les ai filtrés parce que je veux mettre à jour le reste et vérifier les multiples manuellement) * –
pouvez-vous montrer la requête complète que vous utilisez alors? –
Nevermind, j'ai trouvé les deux autres délinquants que j'ai manqué par hasard :) ... merci pour l'aide :) Je pense que je l'ai eu droit maintenant :) ... même si je n'ai pas utilisé la solution 'max' parce que J'ai besoin d'être précis sur ce qui est mis à jour, je vais choisir cette réponse car elle m'a amené dans la bonne direction. –