Estoy tratando de unir dos tablas, pero tengo un requisito extraño.SQL complicado Únase
Normalmente me acaba de unirse, donde el registro es para que el Cliente y el Código coincide
SELECT *
FROM DataTable d
JOIN LookupTable l
ON d.LookupCode = l.LookupCode
AND d.Customer = l.Customer
Sin embargo, lo que tengo que hacer es unirse en tres filas de la tabla de consulta. El ID que coincide y la fila anterior y posterior (si existen) en función del orden de clasificación en otra columna (Pedido). Luego, debo ordenar el resultado, con el registro que coincida primero, luego el registro de búsqueda que estaba antes, luego el registro de búsqueda que estaba después del registro coincidente.
¿Alguna idea sobre la mejor manera de lograr esto?
Ejemplo:
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
¿Podría darnos un ejemplo para aclarar? Además, ¿qué RDBMS –
qué RDBMS, por favor? Esto es más fácil en aquellas implementaciones que tienen funciones OLAP ... ¿Y podría indicar en qué columnas _actual_ desea que coincidan? Tal como está, no está claro de dónde viene el 'ID' y la columna' Order' (nota al margen: no se recomienda nombrar tablas/columnas después de las palabras 'reservadas' en SQL). –
Sql Server, agregué un exmaple – CaffGeek