Увеличение значений в SQL Server с помощью программирования - PullRequest
0 голосов
/ 04 февраля 2011

У меня есть таблица в SQL Server, которая имеет 3 поля,

Id int identity(1,1)
thRead int
level int

Теперь в этой таблице есть потоки, например 1-5, все повторяются 5 раз, например:

 1,1,1,1,1 2,2,2,2,2 3,3,3,3,3 4,4,4,4,4 5,5,5,5,5

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

Я хочу вывод, как в таблице ниже....

1   0
1   1
1   2
1   3
1   4
2   0
2   1
2   2
2   3
2   4
3   0
3   1
3   2
3   3
3   4

Пожалуйста, кто-нибудь может мне помочь с этим ... обновление должно быть с запросом выбора, поэтому нет необходимости вводить поток вручную, оно должно обновляться автоматически

Спасибо иС уважением Аббас Electricwala

Ответы [ 2 ]

1 голос
/ 04 февраля 2011

Это одноразовое обновление? Если это так, это будет работать.

with cte as
(
SELECT Id , thRead, level,
       ROW_NUMBER() OVER (PARTITION BY thRead ORDER BY Id) -1 AS RN
FROM T
)
UPDATE cte
SET level = RN

Если вы хотите сделать это для новых строк, это более сложно.

0 голосов
/ 04 февраля 2011

Вы можете попробовать это

;WITH Temp as
(
 SELECT Id , thRead, ROW_NUMBER() OVER (PARTITION BY thRead ORDER BY Id) -1 'Level' 
 FROM YourTable
)
Select Id, ThRead, Level from Temp
...