5
テーブルから2列を選択し、各値にint値を割り当てたいと思う。しかし、私は最初の列IDが同じであるすべての値で同じであることを望みます。SQL Serverで行番号を割り当てるが、値にグループ化する
第2列では、各値にも番号が付けられますが、最初の列で区切られます。私はこの作品を見つけ出しましたが、最初の部分を働かせることはできません。
私が使用しているテストシナリオは次のとおりです。
DECLARE @TestTable as Table (Column1 char(1), Column2 char(1))
INSERT INTO @TestTable SELECT 'A','A'
INSERT INTO @TestTable SELECT 'A','B'
INSERT INTO @TestTable SELECT 'A','C'
INSERT INTO @TestTable SELECT 'B','D'
INSERT INTO @TestTable SELECT 'B','E'
INSERT INTO @TestTable SELECT 'B','F'
INSERT INTO @TestTable SELECT 'B','G'
INSERT INTO @TestTable SELECT 'B','H'
INSERT INTO @TestTable SELECT 'C','A'
INSERT INTO @TestTable SELECT 'C','B'
INSERT INTO @TestTable SELECT 'C','C'
SELECT
Row_Number() OVER (Partition BY Column1 ORDER BY Column1) as Column1_ID,
Column1,
Row_Number() OVER (Partition BY Column1 ORDER BY Column1, Column2) as Column2_ID,
Column2
FROM @TestTable
私はこれを実行すると、Column2_IDの値が正しいですが、以下のように、私はColumn1_IDの値はようにしたいと思います。
Column1_ID Column1 Column2_ID Column2
1 A 1 A
1 A 2 B
1 A 3 C
2 B 1 D
2 B 2 E
2 B 3 F
2 B 4 G
2 B 5 H
3 C 1 A
3 C 2 B
3 C 3 C
1あなたは 'partition'をしたくない場合を除き、それ以外の場合は彼らはすべて値 '1'で出てくる:http://www.sqlfiddle.com/#!6/d41d8/1829 – mellamokb
うん、ちょうど私がそれを削除する必要があることを知った:http://www.sqlfiddle.com/#! 6/d41d8/1832 – Andrew
私はそのソリューションを(あなたが最初に投稿したように)試みたが、うまくいかなかった。私はパーティションがオプションであることを認識しませんでした。ありがとう。これはまさに私が必要とするものです。 –