2014-09-07 4 views
0

Я хотел бы добавить номер в мои строки, основанных на стоимости продукта:добавить номер строки на основе данного значения столбца SQL

позволяет сказать, что Ive получил таблица:

ProductId Value 
001 10 
002 30 
003 20 

тогда, когда я заказываю его Значение по возрастанию Я хотел бы получить:

ProductId Value 
001 10 
003 20 
004 30 

Теперь я хочу, чтобы добавить новый столбец с именем позиции, и результат будет выглядеть так:

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

Спасибо за любую помощь, как я могу это сделать.

Моя serrver база данных SQL SERVER 2008R2

+0

Ваша база данных? – Mihai

+0

Ваш пример все еще не конгруэнтный. Теперь вы добавили ProductId из 004, который не соответствует предыдущим или последующим значениям. – paqogomez

ответ

3

Вы можете использовать row_number

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

Конечно, если это будет синхронизировано, следующие изменения в данных могут быть неприятными, чем это стоит, если это не требование.

0

Ok, так что я понял, ответ: Сначала нужно добавить столбец: 'Позиция', а затем:

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 
+0

Вам не требуется соединение. –

Смежные вопросы