Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tsql 如何在不使用标识列的情况下在SQLServer2000中生成RowID_Tsql_Sql Server 2000 - Fatal编程技术网

Tsql 如何在不使用标识列的情况下在SQLServer2000中生成RowID

Tsql 如何在不使用标识列的情况下在SQLServer2000中生成RowID,tsql,sql-server-2000,Tsql,Sql Server 2000,让我提出我的问题 我不得不说 Name A B C A D B 我想要的是 ID Name 1 A 2 B 3 C 4 A 5 D 6 B 如果我写 选择名称,(从@t中选择COUNT(*)作为i2,其中i2.name这里有两种解决方法 一, 二, 为什么不使用你得到的解决方案呢?同样,这是为了某种程度的“工作良好”,因为你有一个三角形连接,也就是半交叉连接,也就是rbar(一行一行)。真正的问题是,你为什么需要行号?也就是说,你想解决的问题是什么。

让我提出我的问题

我不得不说

Name

A
B
C
A
D
B
我想要的是

ID   Name
1    A
2    B
3    C
4    A
5    D
6    B
如果我写
选择名称,(从@t中选择COUNT(*)作为i2,其中i2.name这里有两种解决方法

一,

二,


为什么不使用你得到的解决方案呢?同样,这是为了某种程度的“工作良好”,因为你有一个三角形连接,也就是半交叉连接,也就是rbar(一行一行)。真正的问题是,你为什么需要行号?也就是说,你想解决的问题是什么。那么,也许有一种替代解决方案不需要行号。不要说“我不能使用标识列”。使用temp table/table变量不会更改架构。如果要使用较慢的三角形计数联接,请根据另一个问题的答案进行操作。“ROW_NUMBER”不是可识别的函数name@ApocatastasisSQLServer2008之后是
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
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