2014-01-29 2 views
-1

У меня есть таблица, как показано ниже.Задать значения предыдущей строки в текущей строке Oracle view

Теперь я хочу видеть, где для каждой строки значения в столбце START_DATE должны быть значениями в END_DATE предыдущей строки. (Игнорируйте только одну строку для создания вида, которая будет заполнена значением нежелательной почты или нулевым значением).

Любые предложения, пожалуйста. Заранее спасибо

enter image description here

+0

Пожалуйста, пост определения таблицы и примеры данных, как текст, а не как изображения. В идеале используйте пример http :: //sqlfiddle.com. –

+0

Извините, хотя изображение будет понятно для объяснения. –

+0

искать функции LAG – Randy

ответ

3
select value1, 
     lag(end_date) over (order by end_date) as start_date, 
     end_date 
from the_table; 

Если нет «предыдущей» строки (в зависимости от порядка сортировки, определенной order by), то функция возвращает lag()NULL.

Если вы не хотите, чтобы значение NULL а что-то другое вместо того, чтобы в первый ряд, вы можете указать значение по умолчанию для функции lag():

select value1, 
     lag(end_date,1, DATE '2014-01-01') over (order by end_date) as start_date, 
     end_date 
from the_table; 
+0

Привет .. Идентификатор даты - столбец в таблице ... Мне нужна дата начала столбца в моем представлении –

+0

@VinodChelladurai: тогда просто поменяйте имена. –

0
SELECT t.ID, t.EndDate, Max(s.EndDate) as StartDate 
FROM TableName t 
    LEFT JOIN TableName s ON t.EndDate> s.EndDate 
GROUP BY t.ID, t.EndDate 
Смежные вопросы