У меня есть таблица событий, в которой отображаются даты и участники событий, но клиент теперь хочет видеть названия участников во время события. У меня есть таблица аудита, которая показывает изменения в заголовке и даты, когда произошло изменение, но я не уверен, как выполнить инструкцию SQL, которая найдет заголовок, дата которого меньше даты события, но больше, чем предыдущие изменения названия ,Oracle SQL для определения ближайшей даты меньше даты события
Пример:
В audit
таблице у меня есть:
name1, title1, 1/23/2011
name1, title2, 2/1/2012
name1, title3, 3/1/2013
В event
таблице у меня есть
event1, name1, 3/2/2012
event2, name1, 1/30/2011
event3, name1, 6/3/2013
event4, name1, 5/3/2012
Результат Я хочу это:
event1, name1, title2 -- (event date > 2/1/2012 (title2 date) but < 3/1/2013 (title3 date)
event2, name1, title1 -- (event date > 1/23/2011 but < other title dates)
event3, name1, title3 -- (event date > highest title date)
event4, name1, title2 -- (same as first example above)
Можно ли использовать только SQL или pl/sql?
Это работает, когда вы получаете e скобки вправо. Проверено на моих таблицах: SELECT e.event_name, a.name, a.title FROM audit_tab a JOIN event e ON a.name = e.person_name WHERE a.title_date = (SELECT MAX (a.title_date) FROM audit_tab a WHERE a.title_date <= e.event_date); –
@Przemyslaw Kruglej - Спасибо за тестирование. Я должен быть слеп, но я не вижу ничего плохого в своих скобках. Что мне не хватает? –
Вам не хватает скобки перед ключевым словом SELECT :) она есть, но сразу после нее. –