Sql server 在select语句中添加字母表列

Sql server 在select语句中添加字母表列,sql-server,Sql Server,我想在编写select查询时添加字母表列 我的问题是: select empname, address from Employee table 我想得到像这样的数据 empname address alphabetcolumn Pramod USA A xyz USA B 我认为这不是OP想要的,而是基于有限的信息 您可以使用以下命令将新列添加到表中: ALTER TABLE Employee ADD alphabetcolumn char(1); 您可

我想在编写select查询时添加字母表列

我的问题是:

select empname, address from Employee table 
我想得到像这样的数据

empname address alphabetcolumn
Pramod  USA       A
xyz     USA       B
我认为这不是OP想要的,而是基于有限的信息

您可以使用以下命令将新列添加到表中:

ALTER TABLE Employee ADD alphabetcolumn char(1);

您可以使用下面的方法

在ASCII中,表A从65开始。行号从1开始。因此,我将行数与64相加得到65+

select 
  empname, 
  address,
  CHAR((ROW_NUMBER() OVER(ORDER BY empname ASC)) + 64) AS ALPHABET
from Employee
如果支持两个字符,则可以使用此方法

With r as 
(  
   select 
     empname, 
     address,
     CHAR((ROW_NUMBER() OVER(ORDER BY empname ASC)) + 64) AS rn
   from Employee
)
select IIF(rn / 26 = 0, '', char(rn/26 + 64)) + char((rn -1) % 26 +65)  
from r;

可以用一个更充实的例子。我假定您希望将26个字母按A-Z顺序分配到前26行。如果超过26排怎么办?@Damien_,26排之后的不信者躺在AA,ABetc@PramodGehlot我建议用你真正想要的和为什么想要的来改进这个问题。使用字母对列进行编号在最好的情况下是不寻常的,这将导致一个奇怪的排序序列。例如,AA会在Z之前出现。你能解释一下这个要求的原因吗?看起来有点奇怪,而且做起来也不那么简单。此外,您需要将其存储在表中还是可以在报表选择中计算?列是存储在表中的一段数据的定义,在查询中,它只是结果集的计算部分。我没有添加要选择“添加时间”的列column@PramodGehlot那不是你在问题中写的。鉴于时间添加栏@PramodGehlot缺少信息,此答案是正确的?您的问题中没有时间添加栏。这到底是从哪里来的?@Larnu在问题中的一条评论中解释说OP想要排名,而不是一个专栏all@simonare26点后我们会做什么row@PramodGehlot您从未要求超过26行。更新问题