powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Запрос
9 сообщений из 9, страница 1 из 1
Запрос
    #32133075
James
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Данные:
1 200
2 600
3 null
5 null
6 800
7 null
8 900
надо что бы там где есть Null стало последнее не Null значение, т.е
1 200
2 600
3 null <-- 600
5 null <-- 600
6 800
7 null <-- 800
8 900
...
Рейтинг: 0 / 0
Запрос
    #32133083
lilo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
попробуй test твоя таблица id , pole -поля
UPDATE test t SET t.pole=(
SELECT pole FROM test WHERE id =(
SELECT MAX(id) FROM test z
WHERE pole IS NOT NULL
AND z.id<t.id ))
WHERE pole IS NULL
...
Рейтинг: 0 / 0
Запрос
    #32133091
James
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
update не нужен
нужно написать select который возрашает данные
...
Рейтинг: 0 / 0
Запрос
    #32133111
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
create table test  (
    test_id number( 9 )
  , value  number( 9 )
)
/
insert into test values ( 1 ,  200 );
insert into test values ( 2 ,  600 );
insert into test values ( 3 , null);
insert into test values ( 5 , null);
insert into test values ( 6 ,  800 );
insert into test values ( 7 , null);
insert into test values ( 8 ,  900 );
commit;

select t.test_id
     , t2.value
from (select t.test_id
           , (select max(t2.test_id)
              from test t2
              where t2.test_id <= t.test_id
                and t2.value is not null
             ) lag_nn_id
      from test t
     ) t
   , test t2
where t.lag_nn_id = t2.test_id
/
...
Рейтинг: 0 / 0
Запрос
    #32133118
acidbaba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
select max(b.id) from ttt1 a, ttt1 b
where
a.rowid>=b.rowid
group by a.rowid, a.id
...
Рейтинг: 0 / 0
Запрос
    #32133367
James
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To Denis Popov:
Запрос работать будет но
если таблица большая - очень долго
необходимо что то более быстрое
...
Рейтинг: 0 / 0
Запрос
    #32133382
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
create or replace package pkg_lag_nn as
  procedure clear_lag_nn;
  function get_lag_nn (p_value number) return number ;
end;
/

create or replace package body pkg_lag_nn as

v_lag_nn test.value%type;

procedure clear_lag_nn as begin v_lag_nn := null; end;

function get_lag_nn (p_value number) return number as
begin
  if p_value is not null then
    v_lag_nn := p_value;
  end if;
  return v_lag_nn;
end;

end;
/

exec pkg_lag_nn.clear_lag_nn;

select test_id
     , value
     , pkg_lag_nn.get_lag_nn(value) lag_nn_value
from test;
/


Если придумаешь, как еще быстрее- ради бога.
...
Рейтинг: 0 / 0
Запрос
    #32133496
James
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To Denis Popov:
Оригинально
Блеск
Браво
Огромное спасибо
...
Рейтинг: 0 / 0
Запрос
    #32133583
Фотография MaxU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Denis Popov,

красивое решение!
:)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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