2017-07-12 2 views
0

J'ai un problème pour créer un rapport, j'ai besoin de deux tables à joindre qui n'ont aucun moyen de se joindre. J'ai trouvé un moyen de les rejoindre, mais c'est compliqué.Comment puis-je analyser une valeur de chaîne dans une table pour joindre des valeurs dans une autre table?

La table A contient une colonne appelée select_criteria. Voici quelques exemples de 3 valeurs qu'il contient:

SELECT DISTINCT SUM(TRANSCRIPTDETAIL.CREDIT_BILLING) FROM SOMETABLE WHERE (( STUDENTFINANCIAL.TUITION_EXEMPTION = 'EMPFT' ) OR  ( STUDENTFINANCIAL.TUITION_EXEMPTION = 'EMPPT' ))) 

SELECT DISTINCT SUM(TRANSCRIPTDETAIL.CREDIT_BILLING) FROM SOMETABLE WHERE ( STUDENTFINANCIAL.TUITION_EXEMPTION = 'PART50' ) 

Dans le tableau B, j'ai une colonne appelée tuition_exemption, qui contient des valeurs telles que:

EMPFT 

EMPPT 

PART50 

A la fin de la queue de la valeur totale dans le Dans la table A, il y a les codes d'exemption qui correspondent aux valeurs de la table B.

Existe-t-il un moyen d'utiliser MSSQL où je peux analyser les codes de l'instruction longue dans select_criteria, afin qu'ils correspondent parfaitement aux codes de la table B? C'est ma pensée sur un moyen de rejoindre la table A et la table B comme je dois le faire. L'autre complication est qu'il existe une connexion 1: many entre select_criteria et une valeur d'extraction de la formation, mais une connexion 1: 1 entre une valeur d'instruction et une valeur select_criteria. Donc, à la fin, la jointure entre les deux tables devrait imprimer, dans un exemple, la même valeur select_criteria deux fois (je fais référence à la première valeur dans ma liste ci-dessus du tableau A), mais dans ces deux lignes, le deux valeurs différentes d'exemption de frais de scolarité (EMPFT et EMPPT). Ou dans le cas de l'exemple 2 du tableau A, il serait imprimé une fois et correspondrait à PART50 une fois.

Je suis coincé ici. J'ai une déclaration qui saisit avec succès les valeurs select_criteria que je veux:

SELECT select_criteria 
WHERE (
select_criteria LIKE '%EMPFT%' OR 
select_criteria LIKE '%EMPPT%' OR 
select_criteria LIKE '%PART50%' OR 
) 

Mais ce que je dois faire est de cela. Quand il saisit les valeurs select_criteria que je veux, je veux imprimer dans une nouvelle colonne de ce tableau le code correspondant. Ces codes sont des valeurs dans le tableau B comme 'EMPLET', 'EMPPT' et 'PART50'. C'est pourquoi je pensais essentiellement analyser les codes de select_criteria, et les imprimer dans la nouvelle colonne du tableau A. De cette façon, la table A et la table B ont une valeur pour correspondre et j'écris exécuter mon rapport. Je ne fais pas maintenant comment le faire en SQL. Je sais un peu en Perl, mais j'espérais faire tout cela dans SSMS 2012.

Merci pour toute aide!

byobob

Répondre

0

Vous pouvez utiliser une expression qui renvoie un booléen comme critères de jointure. Depuis LIKE renvoie un bool, vous devriez être en mesure de faire ceci:

select * 
from tableA 
join tableB 
on tableA.select_criteria like '%' + tableB.codecolumn + '%' 
+0

J'ai essayé comme vous le suggérez, mais il vient avec le codecolumn de la table B vide et tableA avec des valeurs – byobob