0

使用 SQL Server 2008。

大家好,这里有这个查询:

CREATE PROCEDURE [dbo].[GenerateNumbers]
@pg varchar(255)
AS
BEGIN
DECLARE @Counter as int
SET @Counter = 0
UPDATE dbo.paretoMain

SET @counter = NewPareto = @counter +1  
WHERE PG = @pg


END

工作正常,只有我希望它按 1 列的特定顺序执行此操作。基本上按第 1 列排序。

似乎无法弄清楚任何想法如何?

多谢你们!

编辑:

好吧,看来我把人们弄糊涂了,所以就这样吧。

表中的 3 列。1 称为“newpareto” 1 称为“销售” 1 称为“零件”。销售有货币,部分是varchar。纽帕累托是空白的。

我只想为 100 条记录使用 100 个数字(示例),所以当 row1,Newpareto = 1 时。我提供的这个查询就是这样做的。然而。100 条记录未排序。我需要的是以某种方式在其中添加 order by 以按 Sales 列排序,以便最高销售额(例如 100.00 英镑)将在 Newpareto 列中排名第一。有更清楚的吗?

4

1 回答 1

0

我相信这可能是你想要做的:

update paretoMain
set NewPareto=rn
from (select Sales, row_number() over(order by Sales desc) as rn from paretoMain) as x
where paretoMain.Sales=x.Sales
于 2013-04-12T16:50:41.127 回答