У меня есть следующие таблицы:
Мне нужна одна строка для CID, когда я присоединяюсь к TableB.
Критерии соединения:
Таблица CID Start_dt находится между AreaStart_dt
Если вышеуказанное не соответствует, используйте последний AreaStart_dt, когда tablea.cid = tableb.cid
TableA
CID Start_dt End_dt
1 1/1/18
2 5/1/18
TableB
CID Areaid AreaStart_dt Area_End_dt
1 101 1/1/18 1/1/3000
1 102 1/1/17 12/31/17
2 201 4/1/18 4/29/18
2 301 3/1/18 3/30/18
Выходные данные:
CID Start_dt End_dt Areaid
1 1/1/18 101
2 5/1/18 201
SQL:
SELECT *
FROM TABLEA A
LEFT JOIN (SELECT
DENSE_RANK() OVER (PARTITION BY B.CID ORDER BY AREA_START_DT DESC) RNK
FROM TABLEB B
)TABLEB B ON A.CID = B.ID BETWEEN B.AREASTART_DT
AND B.AREA_END_DT OR A.CLIENTID = B.CLIENTID AND rnk = 1