2017-12-07 18 views
1

インデックスの列(現在の任意の数値)が1000から順番に番号が付け替えられるようにテーブルの列を更新しようとしていますこのシーケンスは、グループが変更されるたびに再開します。他の列の値に応じて変化するインクリメンタルにシーケンスされた値を持つ列を更新する方法

私はPARTITIONでROWNUMBER()を試して、SEQUENCEを定義しようとしましたが、私が探している結果を得ることができません。

私が欲しいものを表1

ID Group Index 
1   A  1 
2   A  2 
3   B  3 
4   B  4 
5   B  5 
6   C  6 
7   D  7 

: 表1

ID Group  Index 
1   A  1000 
2   A  1010 
3   B  1000 
4   B  1010 
5   B  1020 
6   C  1000 
7   D  1000 

答えて

1

あなたは、いくつかの算術演算でrow_number()を使用することができます:groupindexがSQL予約されていることを

select t.*, 
     990 + 10 * row_number() over (partition by group order by id) as index 
from t; 

注意を言葉は本当のものなので列名が正しくありません。

+0

@Chelsea注:上記の数式は、演算子の優先順位に基づいて計算されます.... https://docs.microsoft.com/en-us/sql/t-sql/language-elements/operator-precedence-トランザクションSQL –

関連する問題