【问题标题】:How can I show the row_number alphabetically如何按字母顺序显示 row_number
【发布时间】:2013-12-20 06:39:29
【问题描述】:
SELECT Row_number()
         OVER (
           ORDER BY setsid) AS Set_No,
       setsid,
       testid
FROM   examsets
WHERE  testid = 4

结果是:-

Set_No               
------------------- 
1                    
2                    
3                   
4                    
5                    
6                   
7   

我想要结果为:-

Set_No               
------------------- 
a                    
b                    
c                   
d                    
e                    
f                   
g 

我该怎么做?

【问题讨论】:

  • 你需要显示 Alphabaticaly 什么?
  • 你显示了你不想要的结果。请显示您想要的结果-
  • 当你来到z 时,下一个值是什么?
  • 没有什么比疯了.. 如果你不能这样做,就不要像这样评论@rony
  • 与将数字转换为字符的方法相同。

标签: asp.net sql .net sql-server sql-server-2008


【解决方案1】:

你可以使用它。它不会处理返回超过 26 行的情况。

char(96+row_number() over(order by setsid))

AAZZ 将为您提供676 个不同的值。

select char(((T.N / 26) % 26) + 65) + char((T.N % 26) + 65) as Set_No
from (
     select row_number() over(order by setsid) - 1 as N
     from YourTable
     ) as T

SQL Fiddle

【讨论】:

  • @Gourav 是的,你说你不需要比L 更进一步。我非常想为您推荐另一种解决方案,但我真的不明白您需要这个。
  • 是的,先生,如果出现这种情况,我正在考虑最坏的情况......到目前为止,我们的集合不会超过 10..
  • 听起来会在某个时间点变坏。
【解决方案2】:
SELECT 
      char(ascii(row_number() over (order by setsid))+48) as Set_No       
      setsid,
      testid
FROM   
      examsets
WHERE  
      testid = 4

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多