Supposons que j'ai deux tables, A et B, tous deux avec une clé unique comme suit (il y a bien sûr plus de lignes et de colonnes dans la table vraie):
select [A], [C] from tableA r with (nolock) join tableB l with (nolock) on r.Unique_Key = l.Unique_Key
4 Réponses :
Vous pouvez utiliser le groupe par l'agrégation
select r.Unique_Key,max([A]), max([C]) from tableA r join tableB l on r.Unique_Key = l.Unique_Key group by r.Unique_Key
Si Si vous obtenez des duplicats, votre clé est Pas unique. Vous pouvez identifier les clés avec des doublons en exécutant: p> et: p> basé sur votre choix de noms, vous probablement besoin de corriger les données sous-jacentes. p> p> unique_key code> est vraiment unique dans chaque table, cela fera ce que vous voulez sans produire des doublons:
ni avec p> tabla.a code> ni
tableb.c code> est unique, ou donc je comprends cela.
select distinct tablea.a, tableb.c
from tablea
join tableb on tablea.unique_key = tableb.unique_key;
Vous pouvez utiliser la commande de jointure qui fonctionne bien dans ce cas.
SELECT A.Unique_Key, A.Atable_Column1, A.Atable_Column2, B.Btable_Column3, B.Btable_Column4 From Table1 A inner join Table2 B on A.Unique_Key = B.Unique_Key
Le jeu de données fourni n'a aucune dupliquée unique_key. Si vous obtenez des clés DUP, cela signifie que les tables ont dupliqué unique_keys. Sinon, il n'y a rien de mal avec votre requête. Établissez les doublons et utilisez la jointure, il devrait courir bien.
@Sanmu. . . Fournissez des données d'échantillonnage appropriées qui produisent des résultats en double et soyez clairs sur les résultats que vous voulez vraiment dans ce cas.