Я пытаюсь объединить две таблицы вместе, но имею нечетное требование.Сложный SQL-присоединение
Обычно я бы просто присоединиться, где запись для этого клиента и код соответствует
SELECT *
FROM DataTable d
JOIN LookupTable l
ON d.LookupCode = l.LookupCode
AND d.Customer = l.Customer
Однако то, что мне нужно сделать, это присоединиться три строки из таблицы перекодировки. Идентификатор, который соответствует, и строка до и после (если они существуют) на основе порядка сортировки в другом столбце (Заказ). Затем мне нужно отсортировать результат, с первой записью, а затем записью поиска, которая была раньше, а затем записью поиска, которая была после согласованной записи.
Любые мысли о наилучшем способе достижения этого?
Пример:
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
Не могли бы вы привести пример, чтобы уточнить? Кроме того, какие СУБД –
Какие РСУБД, пожалуйста? Это проще в тех реализациях, у которых есть функции OLAP ... И не могли бы вы перечислить, в каких столбцах _actual_ вы хотите совпадения? Как бы то ни было, неясно, откуда приходит идентификатор, а столбец «Порядок» (сторона примечания - не рекомендуется указывать таблицы/столбцы после «зарезервированных» слов в SQL). –
Sql Server, я добавил exmaple – CaffGeek