Постановка задачи:
выберите название всех магазинов, их статус, номера телефонов, дату вступления в силу
чей номер телефона был изменен с 2003 года по настоящее время.
Схема
store_name,phone number , start_date , status
пример строк
abc 1234 30-DEC-2011 open
abc 3433 04-Jan-2012 close
bbb 4444 30-Jan-2010 open
bbb 4444 31-Jan-2011 open
выход
abc 1234 open 30-DEC-3011 till 3-Jan-2012
abc 3433 close 04-Jan-2012 till date
У меня тоже все в порядке с двумя строками с отсортированной датой начала, как
abc 1234 30-DEC-2011 open
abc 3433 04-Jan-2012 close
bbb
не следует сообщать, так как номер телефона не изменился. Мы должны сообщать только о тех магазинах, для которых был изменен номер телефона.
Может кто-нибудь помочь мне с этим запросом в Oracle? Я думаю, что с помощью коррелированных запросов это можно сделать, но я не уверен, как я могу построить один.
Обратите внимание, что в моей таблице содержится около 3154953 записей, поэтому мне также необходимо убедиться, что коррелированный запрос не блокирует таблицу на длительное время. Возможно ли это с Oracle?
Спасибо!
Ответ APC работает для меня только потому, что я вижу много повторений в моем результате.
Для ввода:
select store_name,phone_number,start_date, status where store_name=abc;
возвращает
STORE_name Phone number start_date STATUS
---------------- ---------------- ----------- ----------
abc 122 18-JAN-2011 open
abc 122 18-JAN-2011 open
abc 122 18-JAN-2011 close
выполнение вашего запроса дает мне следующий вывод.
abc 122 open from 18-JAN-2011 to 17-JAN-2011
abc 122 open from 18-JAN-2011 to 17-JAN-2011
abc 122 close from 18-JAN-2011 to date
Можете ли вы объяснить, почему и где мисс?