Изменение нумерации поля раздела итогов, начиная с «1» в SQL Server - PullRequest
1 голос
/ 11 мая 2019

У меня есть следующая таблица ввода.Мне нужен умный способ динамически перенумеровать индексы родительского раздела, начиная с «01», и отображать их в новом столбце.

Я использую SQL Server 2014 Express SP2

MyTable :

ID      Integer
SECTION Varchar

Запрос:

SELECT * FROM MyTable

Результаты:

+--+--------+
|ID|SECTION |
+--+--------+
|1 |03      |
|2 |03.01   |
|3 |03.01.01|
|4 |03.02   |
|5 |03.03   |
|6 |04      |
|7 |04.01   |
|8 |04.02   |
|9 |05      |
+--+--------+

Вот что я пытаюсь добиться с помощью моего выбора или процедуры:

+--+--------+--------+
|ID|SECTION |NEWSECT |
+--+--------+--------+
|1 |03      |01      |
|2 |03.01   |01.01   |
|3 |03.01.01|01.01.01|
|4 |03.02   |01.02   |
|5 |03.03   |01.03   |
|6 |04      |02      |
|7 |04.01   |02.01   |
|8 |04.02   |02.02   |
|9 |05      |03      |
+--+--------+--------+

1 Ответ

1 голос
/ 11 мая 2019

Это просто строковые операции:

select t.*,
       stuff(section, 1, 2,
             right(concat('00', dense_rank() over (order by left(section, 2))), 2)
            )
from t;

Я имею в виду, dense_rank() выполняет работу по перенумерации основных разделов. Остальное - это просто получить значение в section.

.

Здесь - это дБ <> скрипка.

...