Ich versuche, zusammen zwei Tabellen zu verknüpfen, aber eine ungerade Anforderung haben.komplizierte SQL Join
Normalerweise würde ich nur verbinden, in dem der Datensatz für die Kunden ist und der Code übereinstimmt
SELECT *
FROM DataTable d
JOIN LookupTable l
ON d.LookupCode = l.LookupCode
AND d.Customer = l.Customer
Aber was ich brauche, ist auf drei Zeilen aus der Lookup-Tabelle zu tun, zu verbinden. Die ID, die übereinstimmt, und die Zeile davor und danach (falls vorhanden) basierend auf der Sortierreihenfolge in einer anderen Spalte (Bestellung). Ich muss dann das Ergebnis sortieren, mit dem Datensatz, der zuerst übereinstimmt, dann den Suchdatensatz, der zuvor war, und dann den Suchdatensatz, der nach dem übereinstimmenden Datensatz war.
Irgendwelche Gedanken über den besten Weg, dies zu erreichen?
Beispiel:
Lookup:
Customer Code Order
12345 A 1
12345 B 2
12345 C 3
12345 D 4
12345 E 5
22222 A 1
22222 B 2
22222 D 4
22222 E 5
Data:
Customer Code
12345 B
12345 D
22222 B
22222 D
Result I need
Customer Code
12345 B
12345 A
12345 C
12345 D
12345 C
12345 E
22222 B
22222 A
22222 D
22222 D
22222 B
22222 E
Können Sie ein Beispiel zur Klärung geben? Auch welche RDBMS –
Was RDBMS, bitte? Dies ist einfacher in den Implementierungen, die OLAP-Funktionen haben ... Und könnten Sie bitte auflisten, welche Spalten _actual_ die Übereinstimmungen haben sollen? Wie es ist, ist es unklar, woher 'ID' kommt und die 'Order'-Spalte (Randnotiz - es wird nicht empfohlen, Tabellen/Spalten nach den 'reservierten' Wörtern in SQL zu benennen). –
Sql Server, habe ich ein Beispiel hinzugefügt – CaffGeek