【发布时间】:2019-04-09 19:00:21
【问题描述】:
我有一个容器列表(超过 2K 行),我想将其拆分为多个比较
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
我在考虑使用隔间的数量或添加一个标识列来添加 anm 增量 char(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吗? -
你考虑过不这样做吗?老实说,这是一个充满问题的“递增”信。到了 27 岁会发生什么?你现在有AA吗?当 AA 应该排在 Z 之后时,你将如何对它们进行排序?你真的不想要的所有组合怎么样。比如FUJ之后会发生什么?还是在 SEW 之后?你还能做出多少其他 2-3 个字母组合应该排除在外???并且将现有的加上另一个值塞进同一个元组违反了 1NF,应该是两列。
标签: sql-server character auto-increment