powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите с запросом. Вывод значения предыдущей строки.
7 сообщений из 7, страница 1 из 1
Помогите с запросом. Вывод значения предыдущей строки.
    #39285854
PalR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемые коллеги, помогите составить запрос.
Имеется тавлица со сначениями фамилия, имя, отчество, дата накладной, номер накладной.
with t as
(
select 'ИВАНОВ' FAM, 'ИВАН' IM, 'ИВАНОВИЧ' OT, '10.07.2016' DT, '1821' NAK from dual
union ALL
select 'ПЕТРОВ' FAM, 'ПЕТР' IM, 'ПЕТРОВИЧ' OT, '15.06.2015' DT, '1052' NAK from dual
union ALL
select 'ПЕТРОВ' FAM, 'ПЕТР' IM, 'ПЕТРОВИЧ' OT, '06.09.2014' DT, '996' NAK from dual
union all
select 'ИВАНОВ' FAM, 'ИВАН' IM, 'ИВАНОВИЧ' OT, '08.05.2016' DT, '1001' NAK from dual
union all
select 'ИВАНОВ' FAM, 'ИВАН' IM, 'ИВАНОВИЧ' OT, '24.08.2014' DT, '94' NAK from dual
union ALL
select 'ПЕТРОВ' FAM, 'ПЕТР' IM, 'ПЕТРОВИЧ' OT, '15.06.2015' DT, '1058' NAK from dual
union ALL
select 'ПЕТРОВ' FAM, 'ПЕТР' IM, 'ПЕТРОВИЧ' OT, '06.05.2016' DT, '1235' NAK from dual
union ALL
select 'СИДОРОВ' FAM, 'СИДОР' IM, 'СИДОРОВИЧ' OT, '18.11.2014' DT, '156' NAK from dual
)
select FAM, IM, OT, DT, NAK from t

Необходимо вывести значения фамилия, имя, отчество, дата накладной, номер накладной, дата предыдущей накладной, номер предыдущей накладной. Должно получиться такого вида
FAMIMOTDTNAKDT_PREDNAK_PREDИВАНОВИВАНИВАНОВИЧ10.07.2016182108.05.20161001ПЕТРОВПЕТРПЕТРОВИЧ15.06.2015105206.09.2014996ПЕТРОВПЕТРПЕТРОВИЧ06.09.2014996NULLNULLИВАНОВИВАНИВАНОВИЧ08.05.2016100124.08.201494ИВАНОВИВАНИВАНОВИЧ24.08.201494NULLNULLПЕТРОВПЕТРПЕТРОВИЧ15.06.2015105815.06.20151052ПЕТРОВПЕТРПЕТРОВИЧ06.05.2016123515.06.20151058СИДОРОВСИДОРСИДОРОВИЧ18.11.2014156NULLNULL
...
Рейтинг: 0 / 0
Помогите с запросом. Вывод значения предыдущей строки.
    #39285860
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PalRпредыдущейRTFM Analytic Functions (FAQ)
...
Рейтинг: 0 / 0
Помогите с запросом. Вывод значения предыдущей строки.
    #39285879
PalR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пробовал с LAG, но получается бред.
...
Рейтинг: 0 / 0
Помогите с запросом. Вывод значения предыдущей строки.
    #39285880
Бельфя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как-то так:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
with t as
(
select 'ИВАНОВ' FAM, 'ИВАН' IM, 'ИВАНОВИЧ' OT, to_date('10.07.2016', 'dd.mm.yyyy') DT, '1821' NAK from dual
union ALL
select 'ПЕТРОВ' FAM, 'ПЕТР' IM, 'ПЕТРОВИЧ' OT, to_date('15.06.2015', 'dd.mm.yyyy') DT, '1052' NAK from dual
union ALL
select 'ПЕТРОВ' FAM, 'ПЕТР' IM, 'ПЕТРОВИЧ' OT, to_date('06.09.2014', 'dd.mm.yyyy') DT, '996' NAK from dual
union all
select 'ИВАНОВ' FAM, 'ИВАН' IM, 'ИВАНОВИЧ' OT, to_date('08.05.2016', 'dd.mm.yyyy') DT, '1001' NAK from dual
union all
select 'ИВАНОВ' FAM, 'ИВАН' IM, 'ИВАНОВИЧ' OT, to_date('24.08.2014', 'dd.mm.yyyy') DT, '94' NAK from dual
union ALL
select 'ПЕТРОВ' FAM, 'ПЕТР' IM, 'ПЕТРОВИЧ' OT, to_date('15.06.2015', 'dd.mm.yyyy') DT, '1058' NAK from dual
union ALL
select 'ПЕТРОВ' FAM, 'ПЕТР' IM, 'ПЕТРОВИЧ' OT, to_date('06.05.2016', 'dd.mm.yyyy') DT, '1235' NAK from dual
union ALL
select 'СИДОРОВ' FAM, 'СИДОР' IM, 'СИДОРОВИЧ' OT, to_date('18.11.2014', 'dd.mm.yyyy') DT, '156' NAK from dual
)
select t.*, lag(dt) over(partition by fam, im, ot order by dt) pred_dt, lag(nak) over(partition by fam, im, ot order by dt) pred_nak from t
...
Рейтинг: 0 / 0
Помогите с запросом. Вывод значения предыдущей строки.
    #39285882
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PalRПробовал с LAG, но получается бред.Потому что бредово пробовал. Закономерно.
...
Рейтинг: 0 / 0
Помогите с запросом. Вывод значения предыдущей строки.
    #39285903
PalR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я делал так
Код: plsql
1.
2.
3.
4.
5.
6.
select FAM, IM, OT, 
        DT, 
        NAK,
        to_char(to_date(substr(lag(to_char(to_date(dt,'dd.mm.yyyy'),'yyyymmdd')||nak,1) over (order by FAM||'.'||IM||'.'||OT||'.'||to_char(to_date(dt,'dd.mm.yyyy'),'yyyymmdd')||nak),1,8),'yyyymmdd'),'dd.mm.yyyy') AS dt_pred,
        substr(lag(to_char(to_date(dt,'dd.mm.yyyy'),'yyyymmdd')||nak,1) over (order by FAM||'.'||IM||'.'||OT||'.'||to_char(to_date(dt,'dd.mm.yyyy'),'yyyymmdd')||nak),9,100) AS nak_pred
        from t


Не сообразил как прикрутить группировку.
Бельфя , спасибо большое.
...
Рейтинг: 0 / 0
Помогите с запросом. Вывод значения предыдущей строки.
    #39286258
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PalR,
как ты живешь то с такой больной параноидальной фантазией?) ну это же идиотизм то что ты написал.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите с запросом. Вывод значения предыдущей строки.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]