J'essaie de fusionner des données d'une table à une autre.Mise à jour d'une table d'une autre table avec des clés dupliquées
Tableau 1 (Tab1)
ID col2 col3 col_to_update
1 s1 a1 null
2 s1 a2 null
3 s1 a2 null
4 s2 a1 null
5 s3 a1 null
6 s4 a1 null
Tableau 2 (Tab2)
ID col2 col3 col4
10 s1 a1 v1
11 s1 a1 v2
12 s1 a2 v3
13 s2 a1 v4
14 s3 a1 v5
15 s4 a1 v6
16 s4 a1 v7
Je cherche à cartographier colonne col4
de la table Tab2
dans la colonne col_to_update
dans le tableau Tab1
basé sur l'appariement Tab1.col2 = Tab2.col2
et Tabl.col3 = Tab2.col3
pour obtenir ci-dessous sortie attendue:
Sortie attendue
ID col2 col3 col4
1 s1 a1 v1
2 s1 a2 v3
3 s1 a2 v3
4 s2 a1 v4
5 s3 a1 v5
6 s4 a1 v6
J'ai essayé, sans succès, avec ci-dessous requête:
MERGE INTO Tab1 x1
USING
(
SELECT t1.id as t1id, t2.id as t2id, t2.col2 t2col2, t2.col3 t2col3, t2.col4 from Tab2 t2
JOIN Tab1 t1 ON t2.col2 = t1.col2 AND t2.col3 = t1.col3
) x2
ON (x1.id = x2.t1id)
WHEN MATCHED THEN UPDATE SET
x1.col_to_update = x2.col4;
Y at-il un moyen d'obtenir le résultat attendu.
Cela n'a pas de sens: dans le tableau que vous avez plus d'un candidat « source » pour la valeur qui doit être utilisé pour la mise à jour. Quels sont les candidats potentiels à utiliser? Dans votre exemple, pour ID = 1, pourquoi avez-vous choisi v1 et non v2 à partir de Tab2? – mathguy
oui Tab2 a plusieurs correspondances potentielles, je m'attends à mapper le premier ou un qui correspond. – Brij
"le premier" est indéfini - y a-t-il une commande? Ou voulez-vous dire la valeur min? Thorsten a déjà montré comment faire ça. – mathguy