Я пытаюсь получить последнюю запись, вставленную / обновленную в таблицу SHIPMENT_EVENT.Есть пара таких событий / кодов, которые не нужны, например, все начинаются с '9'.Проблема в том, что эти события всегда отправляются последними, но они наименее важны для меня, поэтому мне нужно отобразить последнее событие, но если это событие 9X, то оно не должно отображаться, вместо этого оно должно продолжать искатьдля последнего события, которое не 9X до достижения действительного кода для показа.
Вот код, который, как я думал, помогал моему делу.Это левое соединение должно проверить таблицу событий и извлечь последнее событие.Тем не менее, тестирование показало, что вместо этого показывается NULL, когда последнее событие было 9X.
Я попытался переместить предложение NOT LIKE по окружности за пределы первого блока, но с тем же результатом.Я заметил, что это было неправильно, когда я удалял не как, я закончил со всеми результатами с событием 9X.
left join
( select ship_id, ship_to_loc_cd856, ship_evnt_cd, updt_job_tms,
carr_tracking_num, event_srv_lvl
FROM
( select ship_id, ship_to_loc_cd856, ship_evnt_cd,
updt_job_tms, carr_tracking_num, event_srv_lvl
, row_number() over(partition by ship_id order by
updt_job_tms desc) as RN
FROM shipment_event
) s
WHERE RN = 1 and ship_evnt_cd not like ('9%')
) AS lscus
ON scus.ship_id=lscus.ship_id and
scus.ship_to_loc_code=lscus.ship_to_loc_cd856
Мне понадобится логика для проверки самого последнего события и извлечения, но если это так9X, затем продолжайте искать следующее не 9x событие.
Спасибо