#sql #oracle
#sql #Oracle
Вопрос:
У меня есть таблица со следующей структурой
RetailerCode Orderdate
1001 01-JUL-16
1001 04-JUL-16
1001 06-JUL-16
Я хочу этот вывод
1001 10/9/2011 - 12/9/2011 2 days
1001 12/9/2011 - 20/9/2011 8 days
1001 20/9/2011 NA
Комментарии:
1. В вашем примере данных нет
RetailerCode
1001. Я предполагаю, что это то, что должна представлять первая строка вашего вывода. Итак, как вы переходите от образца данных к ожидаемому результату?2. В вашем примере данные за июль, но результат за сентябрь. Не могли бы вы отредактировать вопрос, чтобы лучше объяснить вашу потребность?
Ответ №1:
Это выглядит как простые аналитические функции
select RetailerCode, tO_char(Orderdate,'DD/mm/YYYY')||nvl2(next_Orderdate,' - '||tO_char(next_Orderdate,'DD/mm/YYYY'),'') Orderdate_diff, nvl(to_char(next_Orderdate - Orderdate),'NA') count_days from
(select RetailerCode, Orderdate,
lead(Orderdate) over (partition by RetailerCode order by Orderdate) next_Orderdate from YOUR_TABLE
)
Комментарии:
1. Вы пробовали это? Я считаю, что это приведет к ошибке
2. @Michael Piankov Большое тебе спасибо
3. @kumarh, позвольте мне рассказать вам некоторые основы о Stackoverflow. Когда кто-то пишет ответ, и ответ работает для вас, пожалуйста, примите ответ ( Смотрите здесь описание того, как принимать ответы ). У вас много вопросов, на которые вы прокомментировали ответ вместо принятия.