【发布时间】:2011-09-23 10:13:12
【问题描述】:
让我提出我的问题....
我说过
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...
请帮忙
【问题讨论】:
-
为什么不使用your previous question的解决方案??
-
另外,这是为了某种程度的“工作正常”,因为你在那里有一个三角形连接,也就是半个交叉连接,也就是 rbar(逐行排列)。
-
真正的问题是你为什么需要row_number?即,您要解决的问题是什么。那么也许有一个不需要row_number的替代解决方案。
-
不要再说“我不能使用身份列”。使用临时表/表变量没有架构更改。如果您想使用较慢的 triangulat COUNT 连接,请按照其他问题的答案进行操作。
标签: tsql sql-server-2000