Гость
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Последовательная нумерация через условие в Oracle / 11 сообщений из 11, страница 1 из 1
14.12.2021, 10:04
    #40119838
Svyateslav
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательная нумерация через условие в Oracle
Доброго времени, прошу вашей помощи. Есть потребность пронумеровать строку с условием " Если встречается определённое значение начинаем нумеровать заново". Как это прописать на SQL в Oracle не знаю =(. Как хотелось бы, прикладываю картинку.
...
Рейтинг: 0 / 0
14.12.2021, 10:10
    #40119840
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательная нумерация через условие в Oracle
Svyateslav,

77,78,79 откуда?

ps
1) start_of_group для древних версий
2) MATCH_RECOGNIZE

.....
stax
...
Рейтинг: 0 / 0
14.12.2021, 10:28
    #40119851
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательная нумерация через условие в Oracle
Stax

1) start_of_group для древних версий

поборол
Код: 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.
SQL> ed
Wrote file afiedt.buf

  1  with t (id,ind,r) as (
  2  select 1,'ОП', 77 from dual union all
  3  select 2,'ОП', 78 from dual union all
  4  select 3,'ПП', 77 from dual union all
  5  select 4,'ОП', 77 from dual union all
  6  select 5,'ОП', 77 from dual union all
  7  select 6,'ОП', 77 from dual union all
  8  select 7,'ПП', 77 from dual union all
  9  select 8,'ОП', 77 from dual )
 10  , tt as (select t.*,sum(decode(ind,'ПП',1,0)) over (order by id rows between unbounded preceding and current row) gr from t)
 11  select
 12    tt.*
 13   ,decode(gr,0,r,row_number() over (partition by gr order by id)) rn
 14* from tt
SQL> /

        ID IN          R         GR         RN
---------- -- ---------- ---------- ----------
         1 ОП         77          0         77
         2 ОП         78          0         78
         3 ПП         77          1          1
         4 ОП         77          1          2
         5 ОП         77          1          3
         6 ОП         77          1          4
         7 ПП         77          2          1
         8 ОП         77          2          2

8 rows selected.

SQL>



.....
stax
...
Рейтинг: 0 / 0
14.12.2021, 10:47
    #40119857
Svyateslav
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательная нумерация через условие в Oracle
Stax, это сам проставил, а выборку сделаю от ПП и при встрече "ПП" нужно, что бы нумерация начиналась до след "ПП" и т.д.
...
Рейтинг: 0 / 0
14.12.2021, 10:52
    #40119859
Svyateslav
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательная нумерация через условие в Oracle
Stax, а можно поподробнее, что к чему?
...
Рейтинг: 0 / 0
14.12.2021, 11:01
    #40119864
Svyateslav
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательная нумерация через условие в Oracle
Stax, у меня запрос следующего типа:
SELECT
pl."№ плавки",
pl."Дата старта",
pl."Длительность, мин",
pl."Марка",
pl."Длительность простоев, мин",
pl.ппр_16

FROM pl
ORDER BY
pl."Дата старта"
...
Рейтинг: 0 / 0
14.12.2021, 11:07
    #40119867
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательная нумерация через условие в Oracle
Svyateslav
Stax, а можно поподробнее, что к чему?


о чем подробнее?

Svyateslav
Stax, у меня запрос следующего типа:
SELECT
pl."№ плавки",
pl."Дата старта",
pl."Длительность, мин",
pl."Марка",
pl."Длительность простоев, мин",
pl.ппр_16

FROM pl
ORDER BY
pl."Дата старта"


что сдесь ид, инд, хотелось?

.....
stax
...
Рейтинг: 0 / 0
14.12.2021, 11:14
    #40119868
Svyateslav
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательная нумерация через условие в Oracle
Stax,Id нет "сделаем"

SELECT
pl."№ плавки",
pl."Дата старта",
pl."Длительность, мин",
pl."Марка",
pl."Длительность простоев, мин",
pl.ппр_16 (инд) - в этом столбце "ПП" и "ОП",
pl.id,
*столбец который бы хотелось получить*

FROM pl
ORDER BY
pl."Дата старта"
...
Рейтинг: 0 / 0
14.12.2021, 11:42
    #40119878
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательная нумерация через условие в Oracle
Svyateslav
Stax,Id нет "сделаем"

ид необязательно, нужно поле/поля однозначной сортировки
ето может быть напр pl."Дата старта"

Код: 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.
41.
42.
43.
44.
45.
46.
47.
48.
49.
SQL> ed
Wrote file afiedt.buf

  1  with t ("№ плавки","Дата старта","Длительность, мин","Марка","Длительность простоев, мин",ппр_16,id) as (
  2  /* сдесь Ваш селект без order by
  3  SELECT
  4  pl."№ плавки",
  5  pl."Дата старта",
  6  pl."Длительность, мин",
  7  pl."Марка",
  8  pl."Длительность простоев, мин",
  9  pl.ппр_16 (инд) - в этом столбце "ПП" и "ОП",
 10  pl.id,
 11  npp
 12  FROM pl
 13  */
 14  --тестовые данные
 15  select 1,date '2021-12-01',100,'X4',5,'ОП',1 from dual union all
 16  select 1,date '2021-12-02',107,'X1',2,'ОП',2 from dual union all
 17  select 1,date '2021-12-03',110,'X7',4,'ПП',3 from dual union all
 18  select 1,date '2021-12-04',111,'X6',5,'ОП',4 from dual union all
 19  select 1,date '2021-12-05',101,'X2',3,'ОП',5 from dual union all
 20  select 1,date '2021-12-06',106,'X8',1,'ОП',6 from dual union all
 21  select 1,date '2021-12-07',102,'X4',1,'ПП',7 from dual union all
 22  select 1,date '2021-12-08',102,'X7',2,'ОП',8 from dual
 23  )
 24  ,tt as (select t.*,sum(decode(ппр_16,'ПП',1,0)) over (order by id rows between unbounded preceding and current row) gr from t)
 25  select
 26    tt.*
 27  -- ,decode(gr,0,gr,row_number() over (partition by gr order by id)) npp
 28     ,row_number() over (partition by gr order by id) npp --хотелось
 29  from tt
 30* order by id
SQL> /

  № плавки Дата старт Длительность, мин Ма Длительность простоев, мин ПП         ID         GR        NPP
---------- ---------- ----------------- -- -------------------------- -- ---------- ---------- ----------
         1 01.12.2021               100 X4                          5 ОП          1          0          1
         1 02.12.2021               107 X1                          2 ОП          2          0          2
         1 03.12.2021               110 X7                          4 ПП          3          1          1
         1 04.12.2021               111 X6                          5 ОП          4          1          2
         1 05.12.2021               101 X2                          3 ОП          5          1          3
         1 06.12.2021               106 X8                          1 ОП          6          1          4
         1 07.12.2021               102 X4                          1 ПП          7          2          1
         1 08.12.2021               102 X7                          2 ОП          8          2          2

8 rows selected.

SQL>



если ид неуникально, добавить ...ппр_16 ...

.....
stax
...
Рейтинг: 0 / 0
14.12.2021, 13:03
    #40119909
Svyateslav
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательная нумерация через условие в Oracle
Stax,
Спасибо, Вам большое ! Всё заработало, теперь буду пользоваться.
...
Рейтинг: 0 / 0
14.12.2021, 13:13
    #40119914
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательная нумерация через условие в Oracle
Svyateslav
теперь буду пользоваться.

если версия позволяет, возможно правильнее было-б использовать MATCH_RECOGNIZE

хотя ...

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


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