Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Запрос / 9 сообщений из 9, страница 1 из 1
03.04.2003, 19:20
    #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
03.04.2003, 19:34
    #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
03.04.2003, 19:51
    #32133091
James
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
update не нужен
нужно написать select который возрашает данные
...
Рейтинг: 0 / 0
03.04.2003, 20:56
    #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
03.04.2003, 21:14
    #32133118
acidbaba
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
select max(b.id) from ttt1 a, ttt1 b
where
a.rowid>=b.rowid
group by a.rowid, a.id
...
Рейтинг: 0 / 0
04.04.2003, 11:11
    #32133367
James
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
To Denis Popov:
Запрос работать будет но
если таблица большая - очень долго
необходимо что то более быстрое
...
Рейтинг: 0 / 0
04.04.2003, 11:22
    #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
04.04.2003, 12:39
    #32133496
James
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
To Denis Popov:
Оригинально
Блеск
Браво
Огромное спасибо
...
Рейтинг: 0 / 0
04.04.2003, 13:52
    #32133583
MaxU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
2 Denis Popov,

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


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