Chcę wybrać 2 kolumny z tabeli i przypisać wartość int do każdej wartości. Jednak chcę, aby identyfikator pierwszej kolumny był taki sam dla wszystkich wartości, które są takie same.Przypisywanie numeru wiersza w programie SQL Server, ale zgrupowane na wartości
Dla drugiej kolumny chcę, aby każda wartość również była ponumerowana, ale podzielona przez pierwszą kolumnę. Wymyśliłem ten artykuł, ale nie mogę wykonać pierwszej części.
Oto scenariusz testowy, którego używam.
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
Kiedy uruchomić ten, wartości w Column2_ID są poprawne, ale chciałbym wartości dla Column1_ID się następująco.
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 wyjątkiem, że nie chcesz się 'partition', inaczej wszystkie wychodzą z wartością '1': http://www.sqlfiddle.com/#!6/d41d8/1829 – mellamokb
Tak, po prostu zdałem sobie sprawę, że muszę to usunąć: http://www.sqlfiddle.com/#! 6/d41d8/1832 – Andrew
Próbowałem tego rozwiązania (jak pierwotnie napisałeś) i nie działało. Nie wiedziałem, że partycja jest opcjonalna. Dzięki. Dokładnie to, czego potrzebuję. –