0
votes

La jointure SAS / SQL basée sur une colonne correspond à une autre colonne.

J'ai 2 jeux de données que j'ai besoin de faire correspondre sur un champ d'identifiant:

data1: xxx

DATA2: < / forte> xxx

J'ai besoin de fusionner (style SQL joint interne ) ces deux joints de données sur id colonne mais pas data1.id = data2.id . Ce que je veux, c'est data1.id contient data2.id .

donc je veux toutes les lignes où la chaîne ID dans le premier jeu de données contient le ID chaîne du deuxième jeu de données.


1 commentaires

La réponse sera une forme de déclaration similaire, mais être averti: si la valeur de Data2 est aussi courte que votre échantillon est, à moins que vos jeux de données complets ne soient très petits, il y a une très bonne chance que vous allez trouver plusieurs matchs par entrée de données2.


3 Réponses :


5
votes

en SQL, utilisez le comme Opérateur: xxx


comme commenté par Themousemaster, cette technique pourrait générer des lignes de sortie dupliquées si plusieurs identifiants se produisent trouvé dans le même champ. Vous pouvez utiliser distinct pour éliminer les duplicats: xxx


1 commentaires

Cela revient vraiment à ce que le résultat est conçu pour faire. Il pourrait facilement se retrouver avec 2 tables qui ne disposent que de 3 lignes chacune, mais ont une table résultante de 9 enregistrements. Si c'est ce qu'il veut, alors tout va bien, bien sûr :)



1
votes

Utiliser Existe code> Si vous voulez seulement les lignes d'une table:

select d1.id
from data1 d1
where exists (select 1 from data2 d2 where d1.id like '%' || d2.id || '%';


0 commentaires

2
votes

Vous pouvez utiliser la fonction d'index xxx


0 commentaires