Проблемы с настройкой порядка строк по дате в Oracle - PullRequest
0 голосов
/ 04 марта 2019

У меня есть следующий sql:

UPDATE TABLE1 SET SORT_COLUMN=ROWNUM WHERE ACTIVE_RECORD='Y'

Это работает, но это устанавливает порядок в текущем порядке строк, и мне нужно упорядочить по дате, что-то вроде этого:

UPDATE TABLE1 SET SORT_COLUMN=ROWNUM WHERE ACTIVE_RECORD='Y' ORDER BY START_DATE

Но это, очевидно, не сработает.Как я могу обновить столбец SORT на основе даты?

1 Ответ

0 голосов
/ 04 марта 2019

Вот что я написал, основываясь на вашем предыдущем вопросе (который был удален).Подзапрос может быть ответом, который вы ищете:

SQL> create table test
  2    (start_date date,
  3     sort       number);

Table created.

SQL> insert into test (start_date)
  2    select date '2019-03-04' from dual union all
  3    select date '2019-01-12' from dual union all
  4    select date '2019-12-17' from dual;

3 rows created.

SQL> update test t set
  2    t.sort = (select x.rn
  3              from (select start_date,
  4                           row_number() over (order by start_date) rn
  5                    from test
  6                   ) x
  7              where x.start_date = t.start_date);

3 rows updated.

SQL> select * From test;

START_DATE       SORT
---------- ----------
04.03.2019          2
12.01.2019          1
17.12.2019          3

SQL>

Новый столбец, ACTIVE_RECORD, ничего не меняет - добавление его в этот пример должно быть тривиальным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...