Получить все записи из tbl1 и соответствующие (или следующие закрытые) записи из tbl2, соответствие основано на Client # и Date от tbl1 до tbl2 - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь найти соответствие (или следующее большее совпадение) из Tbl1 в Tbl2.

Критерии:

  1. Извлечь все записи из tbl1 и близкое или равное совпадение из tbl2
  2. Найти подходящие записи из таблицы tbl2 (совпадение основано на ClientNo и / или дате)
  3. Соответствие таблицы tbl2 должно основываться на дате, большей или равной дате tbl1.
  4. Результатыне должно иметь дубликатов из tbl1 или tbl2

Первое совпадение должно быть первой датой2 в tbl2, которая больше или равна дате1 в tbl1

Если имеется более одной записи ната же дата, что и при выборе следующей большей или равной даты на основе RefNO в таблице 2.

tbl1 содержит

RecNo  ClientNo   Date1
-----------------------------
  4      1001      2/6/2017
  3      1001      2/4/2018
  1      1001      2/5/2018
  2      1001      2/5/2018
  5      1002      3/8/2018
  9      1002      3/9/2018
 10      1002      4/11/2019

таблица tbl2 содержит

RecNo   ClientNo   Date2      RefNo
-----------------------------------
   1    1001       2/5/2017     1
   4    1001       2/5/2018     2
   2    1001       2/5/2018     4
   3    1001       2/6/2018     5
   5    1002       3/9/2018     1
   6    1002       4/10/2019    2

Результат запроса

RecNoTbl1   ClientNo   Date1       RecNoTbl2   Date2     RefNo
---------------------------------------------------------------
    4        1001      2/6/2017      4         2/5/2018    2
    3        1001      2/4/2018      2         2/5/2018    4
    1        1001      2/5/2018      3         2/6/2018    5
    2        1001      2/5/2018      NULL      NULL       NULL
    5        1002      3/8/2018      5         3/9/2018    1
    9        1002      3/9/2018      6         4/10/2019   2
   10        1002      4/11/2019     NULL      NULL       NULL

Я пытался с ROW OVER PARTITION, но это не сработало.

1 Ответ

0 голосов
/ 08 ноября 2019

Вы можете использовать запрос левого соединения, как этот

Select tb1.*, tb2.* from table1 tb1 
Left join table2 tb2 ON tb1.clientno = tb2.clientno Where tb1.date>=tb2.dare

Для уникальных вы можете использовать разные Как: select distinct tb1.title

Проверить эту ссылку

Для получения дополнительной информации о отличном

И извините, если я не совсем подробно о вещах. Я пишу с телефона.

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