我想以下列格式在两列(字母,数字)中插入数据:
A,101
A,102
A,103
A,201
A,202
A,203
...
A,1203
...
B,101
B,102
B,103
....
Z,1203
尝试解决方案:
我能够通过制作两个表,每个表一列来实现这一点。 在第一张表中,我保留了A-Z,因此有26行。
在第二张表中,我保留了数字101,102,103,201,202,203 ...... 1203。
然后我使用了以下查询
Insert into testtable
select a.letter, n.ID
from Alphabet a
cross join Number n
select * from Alphabet
我达到了所需的结果,但我对这种乏味的方法感到不满意。 此外,我尝试while循环,但到目前为止失败了。
您能帮助我找到并建议更好的方法来实现这一要求吗?
答案 0 :(得分:3)
如果您没有数字/计数表,则可以使用临时计数表。
示例强>
Declare @N1 int = 101
Declare @N2 int = 1203
Select C,N
From (Select Top (@N2-@N1+1) N=@N1-1+Row_Number() Over (Order By (Select NULL)) From master..spt_values n1, master..spt_values n2 ) A
Cross Join (Select Top (26) C=char(65-1+Row_Number() Over (Order By (Select NULL))) From master..spt_values n1 ) B
Order by C,N
返回28,678行
C N
A 101
A 102
A 103
...
Z 1201
Z 1202
Z 1203