Ich bin in einer Situation stecken, wo ich bedingte Join durchführen muss. Die kurze Zusammenfassung könnte sein, ich habe 2 Tabellen TableA
und TableB
.Abbrechen Join-Bedingung basierend auf Spalte Wert
TableA
hat Spalten A1
, A2
, A3
, A4
, A5
, Condition1
, Condition2
ähnlich TableB
Spalten B1
, B2
, Condition1
, Condition2
Und ich brauche auf TableA.Condition1 = TableB.Condition1
und Join-Bedingung zu erfüllen beitreten unter TableA.Condition2 = TableB.Condition2
sollte die Bedingung TableA.Condition2
für einen ersten Datensatzeintrag nicht null sein.
Mit anderen Worten, wenn ich irgendwelche Datensätze mit TableA.Condition1 = TableB.Condition1
übereinstimmte und gleichzeitig TableA.Condition2
für keine von ihnen Null ist, dann führen Sie zweite Join, sonst führen Sie keine zweite Join.
Abfrage könnte wie
SELECT A.* FROM TableA A
INNER JOIN TableB B
ON A.Condition1 = B.Condition1 -- This must be perform
AND WHEN A.Condition2 IS NULL THEN
1 = 1 -- Assuming no join here
ELSE
A.Condition2 = B.Condition2 -- perform join
END
Ihre Verschleierung der a Genaue Details machen es wahrscheinlich schwieriger für echte Lösungen. Wenn Sie nicht vertrauliche/private Informationen zur Verfügung stellen können und die tatsächliche Kontext Tabelle/Spalten würde definitiv helfen. – DRapp