2016-10-19 6 views
-2

У меня есть таблица со следующей структуройДата Разница между последовательными рядами

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 
+0

Данные образцы Безразлично «У меня есть« RetailerCode »из 1001. Я предполагаю, что это то, что должна представлять первая строка вашего вывода. Итак, как вы получаете от данных выборки до ожидаемого результата? –

+0

Ваш пример имеет данные в июле, но результат в сентябре. Вы можете отредактировать вопрос, чтобы лучше объяснить свою потребность? – Aleksej

ответ

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 
) 
+0

Вы пробовали? Я уверен, это даст ошибку – Aleksej

+0

спасибо @Aleksej. Забудьте 'to_char' –

+0

thnk u его работа – kumarh