Две таблицы, совпадения записей пошаговых сегментов (группировка по несоответствию) обнуляются - PullRequest
0 голосов
/ 28 сентября 2019

У меня есть две таблицы, я хочу пошагово объединить их для лучшего матча.

enter image description here

enter image description here

Базовая концепция заключается в разделении обеих таблиц на группы Cust_ID, например

(TableA) (A1) ~ (TableB) (A1), при этом эта группа сначала сопоставляет их с SaleName, а затемнесоответствующие записи совпадают с суммой (- / + 1), все еще остаются не назначенные записи, они идут против нуля.

Затем переходите к следующей группе (ТаблицаA) (A2) ~ (ТаблицаB) (A2),сделать то же, что и выше

Давайте рассмотрим каждую запись таблицы А одну за другой: (Поскольку в записях может быть мало возможностей, я попытался объяснить их подробно с помощью различных примеров в9 записей)

1-я таблица записей A: Искать эту запись (A1) в (Таблица B), найдено 2 записи * Поместить их в неназначенный список

Смотретьдля (A1) (Neal) в неназначенном списке группы (TableB) (A1) найдено точное совпадение, поэтому возвращается в выходную таблицу

*** (А1) (Нил) (200) (U1) ~ (А1) (Нил) (200) (Т2)

Другая запись таблицы В (А1) все еще не назначена, а именно (А1) (Ричард) (200) (T1).

2-я таблица рекордов A:

Искать (A1) (Дэвид) в списке неназначенных групп (TableB) (A1), найдено НетЗапись, поэтому теперь

Найдите (A1) (200) в неназначенном списке,

нашла одну запись (A1) (Ричард) (200) (T1), поэтому присвойте ее

*** (А1) (Дэвид) (200) (У2) ~ (А1) (Ричард) (200) (Т1)

сейчас, нет записей в списке неназначенных (А1)

3-я таблица рекордов A: Искать эту запись (A2) в (Таблица B), найдено 3 записей * Поместить их в неназначенный список

Искать (A2) (Томас) в неназначенном списке группы (TableB) (A2), найдено одно совпадение, поэтому возвращает его в выходную таблицу

*** (A2) (Thomas) (600,5) (U3) ~ (A2) (Thomas) (600) (T3)

Остальные 2 записи по-прежнему не назначены

Поскольку в группе TableA (A2) нет ожидающих записей, эти две неустановленные (TableB) (A2)записи швсе они будут помещены в выходную таблицу со значением NULL

*** (NULL) (NULL) (NULL) ~ (A2) (JON) (310) (T4)

*** (NULL).) (null) (null) ~ (A2) (Jon) (200) (T5)

4-я таблица записей A: Найдите эту запись (A3) в (TableB), найдено 3Записи * Поместите их в неназначенный список

Найдите (A3) (Брайан) в неназначенном списке группы (TableB) (A3), нашли две записи, сначала присвойте против

*** (A1) (Брайан) (450) (U4) ~ (A1) (Брайан) (321) (T6)

5-я таблица рекордовA:

Искать (A3) (Bryan) в списке неназначенных групп (TableB) (A3), найдено без записи, поэтому сейчас

Искать (A3) (251), найдено без записи, завершить поиск и учесть, что вывод нулевого совпадения будет похожстрока

*** (A3) (Брайан) (251) (U5) ~ (ноль) (ноль) (ноль)

6-я таблица рекордов A:

Найдите (A3) (Сара) в неназначенном списке группы (TableB) (A3), обнаружила одну запись, присвойте ее

*** (A3) (Сара) (320.36) (U6) ~ (A3) (Сара) (450) (T8)

Сейчас из 3записи (TableB) (A3), 2 уже назначены, одна все еще не назначена, и совпадений нет, поэтому присвойте значение null

*** (null) (null) (null) ~ (A3)(Брайан) (321) (T7)

7-я таблица рекордов A: Искать эту запись (A4) в (TableB), найдено 3 записей * Поместить их в неназначенный список

Ищите (A4) (Teko) в списке неназначенных групп (TableB) (A4), найдено записей нет, поэтому

Ищите (A4) (285) в списке неназначенных, найдено записей нет,Завершить поиск и учесть, что при нулевом совпадении вывод будет выглядеть как строка

*** (A4) (Teko) (285) (U7) ~ (null) (null) (null) Все еще все 3 из (TableB) (A4) не назначены

8-я таблица записей A:

Искать (A4) (Стивен) в списке неназначенных групп (TableB) (A4), найдено Нет записей, Так что теперь

Найдите (A4) (156) в неназначенном списке, найдена одна запись (156.4), при поиске суммы всегда ищите +/- 1, присвойте ее

*** (A4) (Стивен) (156) (U8) ~ (A4) (Роберт) (156,4) (T9)

2 Осталось в (A4) (Стивен) (156) (U8) неназначенный список

9-я таблица рекордов A:

Искать (A4) (Элизабет) в списке неназначенных групп (TableB) (A4), найдено нетRecord, So Now

Найдите (A4) (102) в неназначенном списке, найдена одна запись (102.6), при поиске суммы всегда ищите +/- 1, присвойте ее

*** (А4) (Элизабет) (102) (U9) ~ (А4) (Чарльз) (102,6) (Т10)

1 Осталось в (А4) (Стивен) (156) (У8)назначенный список

Но в группе (TableA) (A4) ничего не осталось, поэтому этот неназначенный присваивает значение null

*** (null) (null) (null) ~(A4) (Уильям) (175) (T11)

Последним столбцом в выводе является «состояние», если (Output.Amount-Output.Vamount) находится в диапазоне от -1 до +1, затем сопоставляется, в противном случае нетсоответствует.

1 Ответ

0 голосов
/ 28 сентября 2019

Я думаю, что способ сделать это - создать переменную таблицы (или временную таблицу), в которой будут храниться нужные вам результаты.Вы пишете запрос на лучшее совпадение и вставляете эти совпадения в созданную вами таблицу.Затем вы пишете запрос для вашего следующего лучшего совпадения и вставляете эти совпадения в таблицу, но , только если их еще нет .Вы можете использовать where not exists или присоединиться к столу слева и использовать where table.uniqueid is null.Продолжайте все возможные совпадения по порядку.Таким образом, в основном «если наилучшее совпадение, то вставить в таблицу. Иначе, если следующее наилучшее совпадение и его еще нет в таблице, вставить следующее наилучшее совпадение в таблицу. Повторить».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...