Как мне объединить 2 набора данных, одновременно вытягивая более позднюю дату вступления в силу, чтобы избежать дубликатов?
Я начну с того, чего я пытаюсь достичь:
- У меня есть текущая и историческая таблица.
- Я хочу проверить, был ли у одного и того же клиента в обеих таблицах когда-либо reason_iden_fk = 1.
- Если у них есть запись в обеих таблицах, я бы хотел взять более позднюю из 2.
- Как я могу принудительно вернуть самую последнюю дату вступления в силу из TL, в то время как все остальные даты игнорируются?
select custid ,tl.effectivedate from tblcurrent c join translog tl on c.custid = tl.custid and tl.reason_iden_fk = 1 union select from tblhistory h join translog tl on h.custid = tl.custid and tl.reason_iden_fk
Что я уже пробовал:
Row_number ранжирует функции, но удар по производительности огромен.
RossMW
Я борюсь со структурой данных, потому что вы соединяете оба транслога с таблицами tblcustomer и tblhistory. Следовательно, если это одни и те же клиенты, то оба ваших оператора select вернут для этого клиента одни и те же записи транслога, так что результат будет одинаковым. Это означает, что таблица истории не имеет значения в запросе.
Я думаю, что вам нужно будет предоставить соответствующую структуру данных, образцы данных и ожидаемый результат, чтобы мы могли помочь вам в дальнейшем.