Kry*_*ian 0 sql sql-server-2008-r2
我有这样的声明:
declare @max int
@max = 1
SELECT @max, t1.col1, t1.col2
FROM table1 t1
Run Code Online (Sandbox Code Playgroud)
这会给我结果:
1 a a
1 b b
1 c c
Run Code Online (Sandbox Code Playgroud)
我希望得到这样的结果
1 a a
2 b b
3 c c
Run Code Online (Sandbox Code Playgroud)
我怎样才能达到这个效果?
我试着这样做:
@max = 1
SELECT @max, t1.col1, t1.col2
FROM table1 t1
WHERE @max = @max + 1
Run Code Online (Sandbox Code Playgroud)
但没有成功,有人可以帮助我吗?谢谢!
PS.我必须使用@max作为变量 - 我不能使用Identity或AUTOINCREMENT列
使用row_number()函数.
SELECT row_number() over (order by t1.col1, t1.col2),t1.col1, t1.col2
FROM table1 t1
Run Code Online (Sandbox Code Playgroud)
从固定值开始:
declare @your_number int
set @your_number = 24353
SELECT @your_number + row_number() over (order by t1.col1, t1.col2) AS num,t1.col1, t1.col2
FROM table1 t1
Run Code Online (Sandbox Code Playgroud)