我在sql server 2008中有一个像
的表Id Name Volume
1 Jack 20
2 John 20
3 White 40
... (23 more)
27 Jennifer 12
28 Brown 33
29 Brown 55
... (23 more)
53 Alex 67
53 Smith 15
53 Mary 73
我想要的是在这个表中添加一个列,它为每个不同的id保留唯一的字母。示例输出:
Id Name Volume LetterKey
1 Jack 20 A
2 John 20 B
3 White 40 C
... (23 more) (...Z)
27 Jennifer 12 AA
28 Brown 33 AB
29 Brown 55 AC
... (23 more) (...AZ)
53 Alex 67 BA
53 Smith 15 BB
53 Mary 73 BC
... (...BZ)
我们不需要3位数的字母,ZZ将是最后一个字母。我找不到将这样的列添加到表中的正确方法。如果有人帮我,我很感激。感谢。
答案 0 :(得分:4)
只有两个字符的代码,您可以使用row_number()
和一些字符算术:
with t as (
select t.*, row_number() over (order by id) as seqnum
from t
)
select ((case when seqnum > 26
then char(ascii('A') + seqnum / 26 - 1)
else ''
end) +
char(ascii('A') + seqnum % 26)
)
from t