我想根据产品价值在行中添加数字:
让我们说我有桌子:
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
答案 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