在sql where ite中遍历变量

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列

Jon*_*ise 7

使用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)