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

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

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

.....
stax
...
Рейтинг: 0 / 0
Последовательная нумерация через условие в Oracle
    #40119851
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Последовательная нумерация через условие в Oracle
    #40119857
Svyateslav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax, это сам проставил, а выборку сделаю от ПП и при встрече "ПП" нужно, что бы нумерация начиналась до след "ПП" и т.д.
...
Рейтинг: 0 / 0
Последовательная нумерация через условие в Oracle
    #40119859
Svyateslav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax, а можно поподробнее, что к чему?
...
Рейтинг: 0 / 0
Последовательная нумерация через условие в Oracle
    #40119864
Svyateslav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax, у меня запрос следующего типа:
SELECT
pl."№ плавки",
pl."Дата старта",
pl."Длительность, мин",
pl."Марка",
pl."Длительность простоев, мин",
pl.ппр_16

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


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

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

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


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

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

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

FROM pl
ORDER BY
pl."Дата старта"
...
Рейтинг: 0 / 0
Последовательная нумерация через условие в Oracle
    #40119878
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Последовательная нумерация через условие в Oracle
    #40119909
Svyateslav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,
Спасибо, Вам большое ! Всё заработало, теперь буду пользоваться.
...
Рейтинг: 0 / 0
Последовательная нумерация через условие в Oracle
    #40119914
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Svyateslav
теперь буду пользоваться.

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

хотя ...

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


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