Как увеличить букву в группе

У меня есть список контейнеров (более 2 тыс. строк), которые я хочу разбить на несколько частей.

Code Name    Compartments
10   10 feet   1 
15   15 feet   1
25   25 feet   2
100  100 feet  3
150  150 feet  2

Я сделал этот запрос, чтобы добиться этого

select * 
from Containers c
inner join master.dbo.spt_values b on b.type = 'P' and b.number < c.Compartments

Получить

Code Name    Compartments
10   10 feet   1 
15   15 feet   1
25   25 feet   2
25   25 feet   2
100  100 feet  3
100  100 feet  3
100  100 feet  3
150  150 feet  2
150  150 feet  2

Теперь я хочу добавить автоинкрементную букву в код, но для каждой группы, как это.

Code Name    Compartments
10A   10 feet   1 
15A   15 feet   1
25A   25 feet   2
25B   25 feet   2
100A  100 feet  3
100B  100 feet  3
100C  100 feet  3
150A  150 feet  2
150B  150 feet  2

Я думал использовать количество отсеков или добавить столбец идентификаторов, чтобы добавить инкрементный символ (64), но я не могу понять, как сделать инкрементный для каждой группы

select Code + CHAR(Compartments + 64), *  
from Containers c inner join master.dbo.spt_values b on b.type = 'P' and
b.number < c.Compartments

Вы думали об использовании ROW_NUMBER?

Larnu 09.04.2019 21:03

Вы не думали этого делать? Честно говоря, «наращивание» письма чревато проблемами. Что будет, когда тебе исполнится 27? У вас сейчас есть АА? Как вы собираетесь сортировать их, когда AA должно идти после Z? Как насчет множества комбинаций, которые вам действительно не нужны. Например, что будет после FUJ? Или после ШЭВ? Сколько еще можно составить комбинаций из 2-3 букв, которые нужно исключить??? А объединение существующего и другого значения в один и тот же кортеж нарушает 1НФ, то есть должно быть два столбца.

Sean Lange 09.04.2019 21:06
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
49
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

это сработает для вас, но не забудьте проверить после 26, что произойдет, когда вы достигнете «Z».

select Code + CHAR(ROW_NUMBER() OVER(PARTITION BY code ORDER BY name ASC) + 64), *  
from Containers c inner join master.dbo.spt_values b on b.type = 'P' and
b.number < c.Compartments

Это сработает, но, как заметил Шон, это плохой дизайн В самом деле.

Brian 09.04.2019 22:31

Другие вопросы по теме