让我构建我的问题......
我说
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 ...
请帮忙
答案 0 :(得分:1)
以下是解决问题的两种方法
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