2013-12-20 56 views
0
SELECT Row_number() 
     OVER (
      ORDER BY setsid) AS Set_No, 
     setsid, 
     testid 
FROM examsets 
WHERE testid = 4 

结果是: -我怎样才能显示ROW_NUMBER字母

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

我想要的结果: -

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

我怎样才能做到这一点?

+2

你需要什么Alphabaticaly显示? –

+2

你已经显示出你不想要的结果。请显示你想要的结果 - –

+4

当你来到'z'时,下一个值是什么? –

回答

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

+0

先生,当你问我什么后Z ..那么我们可以开始像AA,AB,AC .. – Gourav

+0

@Gourav是的,你说你不需要比'L'更进一步。我非常想为你提供另一种解决方案,但我并不真正了解你需要什么。 –

+0

是的,先生,我想最糟糕的情况下,如果这种情况出现...截至目前我们的套不会穿越10 .. – Gourav

0
SELECT 
     char(ascii(row_number() over (order by setsid))+48) as Set_No  
     setsid, 
     testid 
FROM 
     examsets 
WHERE 
     testid = 4