Excel Style Row Numbering in SQL
Here is a trick to change your rownumbering (or any other sequential numbering) to the way Excel names their columns. The first 26 rows will be named A – Z, the next 26 AA – AZ, then BA – BZ, etc..
SELECT decode( ceil( ( ROWNUM / 26 ) - 1)
, 0, ''
, chr( ceil( (ROWNUM/26)-1 ) + 64)
)
|| chr(64 + decode( MOD(ROWNUM, 26)
, 0, 26
, MOD(ROWNUM, 26)
)
) col2
FROM dual
CONNECT BY LEVEL <= 702; --limits the result to 702 rows
Result:
Row Label
---------------
1 A
2 B
3 C
4 D
5 E
…
28 AA
29 AB
30 AC
31 AD
32 AE
…
698 ZV
699 ZW
700 ZX
701 ZY
702 ZZ
Note that this will be good for 702 rows (nbr_of_letters * (nbr_of_letters+1)). After that you’d have to concatenate a third character, or write a function.