2017-07-12 3 views
0

Ich habe ein Problem, wo ich einen Bericht erstellen muss, ich brauche zwei Tabellen zu verbinden, die keine Möglichkeit haben, beizutreten. Ich habe einen Weg gefunden, wie sie potentiell mitmachen könnten, aber es ist kompliziert.Wie kann ich einen String-Wert in einer Tabelle analysieren, um mit Werten in einer anderen Tabelle beizutreten

Es gibt Tabelle A, die eine Spalte namens select_criteria enthält. Hier sind einige Beispiele von 3 Werte enthält:

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' ) 

In Tabelle B habe ich eine Spalte tuition_exemption genannt, die Werte wie enthält:

EMPFT 

EMPPT 

PART50 

Am hinteren Ende des gesamten Wert innerhalb der Spalte in Tabelle A gibt es die Studienfreiheitscodes, die den Werten in Tabelle B entsprechen.

Gibt es einen Weg, MSSQL zu verwenden, in dem ich die Codes von der langen Aussage in select_criteria analysieren kann, damit sie die Codes tadellos zusammenbringen von Tabelle B? Das ist mein Gedanke auf dem Weg zu Tisch A und Tisch B, wie ich es tun muss. Die andere Komplikation ist, dass es eine 1: viele Verbindung zwischen select_criteria und einem Nachhilfelevel-Wert gibt, aber eine 1: 1-Verbindung zwischen einem Nachhilfelevel-Wert und einem select_criteria-Wert.

So sollte am Ende der Join zwischen den beiden Tabellen, in einem Beispiel, den gleichen select_criteria Wert zweimal drucken (ich referenziere den ersten Wert in meiner Liste oben aus Tabelle A), aber in diesen beiden Zeilen zwei verschiedene Nachhilfewerte (EMPT und EMPT). Oder im Fall von Tabelle A, Beispiel 2, würde es einmal gedruckt werden und einmal mit PART50 übereinstimmen.

Ich bin hier fest. Ich habe eine Anweisung, die erfolgreich die select_criteria Werte, die ich will:

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

packt Aber was ich tun muss, ist dies. Wenn ich die gewünschten select_criteria-Werte erhalte, möchte ich in einer neuen Spalte in dieser Tabelle den Code ausgeben, mit dem sie übereinstimmt. Diese Codes sind Werte in Tabelle B wie "EMPT", "EMPT" und "PART50". Deshalb habe ich daran gedacht, die Codes aus select_criteria im Grunde zu analysieren und sie in die neue Spalte in Tabelle A zu drucken. So haben Tabelle A und Tabelle B einen Wert, der übereinstimmt, und ich schreibe meinen Bericht. Ich mache jetzt einfach nicht, wie man es in SQL macht. Ich weiß etwas in Perl, aber ich hatte gehofft, all das in SSMS 2012 zu tun.

Danke für jede Hilfe!

byobob

Antwort

0

können Sie einen beliebigen Ausdruck verwenden, die einen boolean als Verknüpfungskriterien zurückgibt. Da wie ein Bool zurückgibt, sollten Sie in der Lage sein, nur dies zu tun:

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

Ich versuchte dies, wie Sie vorgeschlagen, aber es kommt mit Werten leer, und tableA mit dem codecolumn aus Tabelle B aus – byobob

Verwandte Themen