Sto provando ad unire due tabelle insieme, ma ho un requisito dispari.SQL complicato Join
Normalmente mi sarebbe solo si uniscono in cui il record è per quel cliente e il codice corrisponde
SELECT *
FROM DataTable d
JOIN LookupTable l
ON d.LookupCode = l.LookupCode
AND d.Customer = l.Customer
Tuttavia, ciò che ho bisogno di fare è unirsi su tre righe della tabella di ricerca. L'ID che corrisponde e la riga prima e dopo (se esistono) in base all'ordinamento in un'altra colonna (Ordine). Devo quindi ordinare il risultato, con il record che corrisponde per primo, quindi il record di ricerca precedente, quindi il record di ricerca che era dopo il record corrispondente.
Qualche idea sul modo migliore per farlo?
Esempio:
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
Potresti fornire un esempio per chiarire? Inoltre, quale RDBMS –
Quale RDBMS, per favore? Questo è più facile in quelle implementazioni che hanno funzioni OLAP ... E potresti per favore elencare su quali colonne _actual_ vuoi che le corrispondenze? Così com'è, non è chiaro da dove proviene 'ID', e la colonna' Order' (nota a margine - non è consigliabile nominare tabelle/colonne dopo le parole 'riservate' in SQL). –
Sql Server, ho aggiunto un exmaple – CaffGeek