Как увеличить букву на группу - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть список контейнеров (более 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

1 Ответ

0 голосов
/ 09 апреля 2019

это будет работать для вас, но не забывайте проверять после 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...