0

私はこの種の声明を持っています:

declare @max int
@max = 1
SELECT @max, t1.col1, t1.col2
FROM table1 t1

これは私に結果を与えるでしょう:

1 a a
1 b b
1 c c

そして、私はこの種の結果を得たいと思っています

1 a a
2 b b
3 c c

どうすればこの結果を達成できますか?

私は次のようにしようとしました:

@max = 1
SELECT @max, t1.col1, t1.col2
FROM table1 t1
WHERE @max = @max + 1

しかし、成功しなかったので、誰かが私を助けてくれますか? ありがとう!

PS。@max を変数として使用する必要があります - Identity または AUTOINCREMENT 列を使用できません

4

2 に答える 2

2

これを試して:

with cte as 
(
  SELECT t1.col1, t1.col2, ROW_NUMBER() by (order by t1.col1, t1.col2) as RowNumber
  FROM table1 t1
)

select c.RowNumber, c.col1, c.col2
from cte c

row_number()関数は 1 から始まる行番号を返します。

于 2013-10-17T12:19:32.927 に答える