Как сгенерировать RowID в Sql server 2000 без использования столбца идентификаторов - PullRequest
0 голосов
/ 27 июня 2011

Позвольте мне сформулировать мой вопрос ....

Я хочу сказать

Name

A
B
C
A
D
B

Что я хочу, это

ID   Name
1    A
2    B
3    C
4    A
5    D
6    B

Если я напишу SELECT name, (SELECT COUNT(*) FROM @t AS i2 WHERE i2.Name <= i1.Name) As rn FROM @t AS i1

это будет работать нормально, если все имена будут разными / уникальными ... Что если они не (как в этом примере)

Даже NEWID () не делает трюк, так как он меняется со временем?

Я использую SQL Server 2000 ...

Пожалуйста, помогите

1 Ответ

1 голос
/ 27 июня 2011

Вот 2 способа ее решения

1

DECLARE @t TABLE ([ID] [int] IDENTITY(1,1), name CHAR)
INSERT @t VALUES ('b')
INSERT @t VALUES ('a')
INSERT @t VALUES ('c')
INSERT @t VALUES ('b')

SELECT * FROM @t

2

DECLARE @t2 TABLE (name CHAR)
INSERT @t2 (name) VALUES ('b')
INSERT @t2 (name) VALUES ('a')
INSERT @t2 (name) VALUES ('c')
INSERT @t2 (name) VALUES ('b')

SELECT ID = ROW_NUMBER() OVER (ORDER BY b), name 
FROM (SELECT name, null b FROM @t2) temp
...