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

根据给定的列值SQL添加行号,sql,sql-server-2008,Sql,Sql Server 2008,我想根据产品价值向我的行中添加数字: 假设我有一张桌子: ProductId Value 001 10 002 30 003 20 然后,当我按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,所以我

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

假设我有一张桌子:

ProductId Value
001 10
002 30
003 20
然后,当我按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,所以我找到了答案: 首先添加列:“位置”,然后:

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

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

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

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

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

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

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

您可以使用
行号

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

当然,如果这不是一次性要求,那么在数据发生变化后保持同步可能会非常麻烦。

您可以使用
行数

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

当然,如果这不是一次性要求,那么在数据发生变化后保持同步可能会非常麻烦。

您可以使用
行数

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

当然,如果这不是一次性要求,那么在数据发生变化后保持同步可能会非常麻烦。

您可以使用
行数

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

当然,如果这不是一次性要求,那么在数据更改后保持同步可能会非常麻烦。

您的示例仍然不一致。您现在添加了一个ProductId 004,它不适合前面或后面的值。您的示例仍然不一致。您现在添加了一个ProductId 004,它不适合前面或后面的值。您的示例仍然不一致。您现在添加了一个ProductId 004,它不适合前面或后面的值。您的示例仍然不一致。您现在添加了一个ProductId 004,它不适合以前或以后的值。您不需要联接。您不需要联接。您不需要联接。您不需要联接。您不需要联接。您不需要联接。