2014-01-20 1 views
1

Я использую SQL Server 2008.колонка Обновление заказа с номером увеличения (в зависимости от ID столбца)

Теперь у меня есть сценарий, описание ниже:

  • 1 стол с 3-мя столбцами: ID , Имя, Заказ.
  • У них есть 8 записей.
  • 5 записей имеют одинаковые данные: ID = '1', Name = 'AAA'
  • 3 записи имеют те же данные: ID = '2', Name = 'BBB'

Теперь я хотите обновить столбец с номером заказа увеличивается (начиная с 1) для каждого ID, Имя:

No Name Order 
1 AAA 1 
1 AAA 2 
1 AAA 3 
1 AAA 4 
1 AAA 5 
2 BBB 1 
2 BBB 2 
2 BBB 3 

Как я могу получить этот результат без использования курсоров?

Я очень благодарен за вашу помощь.

Спасибо.

+0

подстановок row_number() –

ответ

2

Вы можете попробовать следующее. Я использую CTE управлять оператор обновления

WITH data AS 
(
    SELECT Order 
      , ROW_NUMBER() OVER (PARTITION BY ID, NAME 
           ORDER BY ID, NAME) AS Seq 
     FROM TableA 
) 
UPDATE data 
    SET Order = Seq 

замещающий TABLEA с именем таблицы

+0

Да, ваш образец определенно решить мою проблему. Большое спасибо. – user3011414

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