powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Список изменений.
17 сообщений из 17, страница 1 из 1
Список изменений.
    #39546923
iv_roman_vl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Подскажите, как получить список изменений.
Например, есть таблица значение|дата
В ней значения :
1|t1
2|t2
2|t3
1|t4
4|t5
2|t6
4|t7
5|t8

Запрос должен вывести:1,2,1,4,2,4,5
...
Рейтинг: 0 / 0
Список изменений.
    #39546927
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
STFF start_of_group
...
Рейтинг: 0 / 0
Список изменений.
    #39546944
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_roman_vl,

Код: plsql
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.
  1  with t(z,d) as (
  2  select 1,'t1' from dual union all
  3  select 2,'t2' from dual union all
  4  select 2,'t3' from dual union all
  5  select 1,'t4' from dual union all
  6  select 4,'t5' from dual union all
  7  select 2,'t6' from dual union all
  8  select 4,'t7' from dual union all
  9  select 5,'t8' from dual )
 10  ,tt as (
 11  select
 12    t.*
 13   ,lag(z,1,-z) over (order by d) la
 14  from t
 15  )
 16* select z,d from tt where z<>la order by d
SQL> /

         Z D
---------- --
         1 t1
         2 t2
         1 t4
         4 t5
         2 t6
         4 t7
         5 t8

7 rows selected.



....
stax
...
Рейтинг: 0 / 0
Список изменений.
    #39547156
iv_roman_vl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,

Спасибо!!! Работает.
А вот если столбец не числовой, а строчный?
...
Рейтинг: 0 / 0
Список изменений.
    #39547163
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_roman_vl,

Который из них? И что мешает проверить?
...
Рейтинг: 0 / 0
Список изменений.
    #39547175
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,
Код: plsql
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.
  1  with t(z,d) as (
  2    select 'a','t1' from dual union all
  3    select 'b','t2' from dual union all
  4    select 'b','t3' from dual union all
  5    select 'b','t4' from dual union all
  6    select 'c','t5' from dual union all
  7    select 'a','t6' from dual union all
  8    select 'a','t7' from dual union all
  9    select 'b','t8' from dual )
 10    ,tt as (
 11    select
 12      t.*
 13     ,lag(z,1,z||'*') over (order by d) la
 14    from t
 15    )
 16* select z,d from tt where z<>la order by d
SQL> /

Z D
- --
a t1
b t2
c t5
a t6
b t8



......
stax
...
Рейтинг: 0 / 0
Список изменений.
    #39547176
iv_roman_vl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env,

первый столбец
...
Рейтинг: 0 / 0
Список изменений.
    #39547184
iv_roman_vl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,

Отлично!!! Спасибо!!!
И ,надеюсь, последний вопрос)
Если в первой строке встречается null, то запрос не верны. Возвращает не правильно.
...
Рейтинг: 0 / 0
Список изменений.
    #39547219
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_roman_vl,

не тестировал

Код: plsql
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.
  1  with t(z,d) as (
  2    select '','t1' from dual union all
  3    select '','t2' from dual union all
  4    select 'c','t3' from dual union all
  5    select '','t4' from dual union all
  6    select 'c','t5' from dual union all
  7    select 'a','t6' from dual union all
  8    select 'a','t7' from dual union all
  9    select '','t8' from dual )
 10    ,tt as (
 11    select
 12      t.*
 13     ,lag(z,1,z||'*') over (order by d) la
 14    from t
 15    )
 16  select z,d
 17   from tt
 18* where (z is not null and z<>nvl(la,z||'*')) or (z is null and la is not null) order by d
SQL> /

Z D
- --
  t1
c t3
  t4
c t5
a t6
  t8

6 rows selected.



ps
если известно недопустимое значение (напр ~) то проще
nvl(z,'~') ...

.....
stax
...
Рейтинг: 0 / 0
Список изменений.
    #39547224
iv_roman_vl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,

Спасибо, огромное. А то не было времени разбираться в тонкостях with и lag.
Спасибо!!!
...
Рейтинг: 0 / 0
Список изменений.
    #39547230
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
match_recognize для 12c
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
with t(z,d) as (
select 1,'t1' from dual union all
select 2,'t2' from dual union all
select 2,'t3' from dual union all
select 1,'t4' from dual union all
select 4,'t5' from dual union all
select 2,'t6' from dual union all
select 4,'t7' from dual union all
select 5,'t8' from dual 
)
select 
 z,d_start,nvl(d_end,d_start) d_end
from t
MATCH_RECOGNIZE (
  order by d
  MEASURES
    STRT.z as z
   ,STRT.d as d_start
   ,last(same.d) as d_end
  pattern (strt same*)
  define
     same as same.z = prev(same.z)
)

...
Рейтинг: 0 / 0
Список изменений.
    #39547298
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtender,

null?

....
stax
...
Рейтинг: 0 / 0
Список изменений.
    #39547321
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Stax,

Null? И что с ним не так?
...
Рейтинг: 0 / 0
Список изменений.
    #39547329
iv_roman_vl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,

А есть какието ограничения на такой запрос?
При with (select ...)
ко всей таблице около 100 000 строк смещение между следующим и предыдущим элементом нарушается.
Толи размер влияет, толи от значений текущего или следующего элемента . Непонятно.
...
Рейтинг: 0 / 0
Список изменений.
    #39547333
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
а, понял вроде, NULL'ы надо сворачивать тоже?
тогда и их сравнивать будем
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select 
 z,d_start,nvl(d_end,d_start) d_end
from t
MATCH_RECOGNIZE (
  order by d
  MEASURES
    STRT.z as z
   ,STRT.d as d_start
   ,last(same.d) as d_end
  pattern (strt same*)
  define
     same as decode(same.z,prev(same.z),1)=1
)

...
Рейтинг: 0 / 0
Список изменений.
    #39547343
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_roman_vl,
про with не понял

Как вывести разные значения для одинаковых значений столбцов.

Код: plsql
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.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
SQL> select * from t order by d;

Z          D
---------- ----------
null       t1
null       t2
c          t3
null       t4
c          t5
a          t6
a          t7
null       t8

8 rows selected.

SQL> ed
Wrote file afiedt.buf

  1  with
  2    tt as (
  3    select
  4      t.*
  5     ,lag(z,1,z||'*') over (order by d) la
  6    from t --Ваша таблічка на 100 000
  7    )
  8  select z,d
  9   from tt
 10* where (z is not null and z<>nvl(la,z||'*')) or (z is null and la is not null) order by d
SQL> /

Z          D
---------- ----------
null       t1
c          t3
null       t4
c          t5
a          t6
null       t8

6 rows selected.



сбиватся не должно(если я не напартичил с null)

мож у Вас сортировка (т1) более сложная, или надо партицировать

смотрите в какой момент "сбивается"

.....
stax
...
Рейтинг: 0 / 0
Список изменений.
    #39547346
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtender,

спасибо

как ето у меня decode из головы вылетело,
начал городить ...
старею

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


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