根据给定的列值SQL添加行号

时间:2014-09-07 17:10:42

标签: sql sql-server-2008

我想根据产品价值在行中添加数字:

让我们说我有桌子:

ProductId Value
001 10
002 30
003 20

然后当我通过Value asc订购时,我会得到:

ProductId Value
001 10
003 20
004 30

现在我想添加名为Position的新列,结果如下:

ProductId Value Position
001 10 1
002 30 3
003 20 2

感谢您的帮助,我该怎么做。

我的数据库服务器是sql server 2008R2

2 个答案:

答案 0 :(得分:3)

您可以使用row_number

WITH T 
     AS (SELECT *, 
                ROW_NUMBER() 
                  OVER(ORDER BY ProductId) AS P 
         FROM   tablename) 
UPDATE T 
SET    Position = P 

当然,如果这不是一次性要求,那么在数据变化后保持同步可能会比它的价值更加麻烦。

答案 1 :(得分:0)

好的,我找到了答案: 首先添加列:'位置'然后:

Update A
SET A.Position = B.Position
from [Product] A join (
SELECT [ProductId]
      ,[Value]
      ,ROW_NUMBER() over (order by Value) as Position
  FROM Product)  B
  ON A.ProductId= B.ProductId