从 SQL 查询返回唯一的行标识符

ant*_*h.k 1 sql-server stored-procedures

我知道这个问题听起来像是重复。然而,尽管我发现了类似的问题,但我没有得到任何确切的信息。我不想删除从查询返回的任何重复值。我想要的是获得一个唯一标识符,例如从 sp 返回的结果的序列号。我尝试使用 Row_Number()。但是,即使这样也不起作用,因为它应该基于非重复列进行分区。我的结果不需要有非重复的列。等级和密集等级也不在考虑之列。那么,我应该怎么做才能获得唯一标识每一行的序列号类型的列。这些行也应该是 int 的。这是一个例子:

 empName empSalary
 Peter   10000
 Schott  20000
 Schott  10000
Run Code Online (Sandbox Code Playgroud)

表应该还有一列,如下所示:

Slno  empName  empSalary
 1     Peter    10000
 2     Schott   20000
 3     Schott   10000
Run Code Online (Sandbox Code Playgroud)

p2k*_*p2k 5

如果您不关心顺序:

Select ROW_NUMBER() over (order by (Select 1)) as SlNo ,*
from table
Run Code Online (Sandbox Code Playgroud)

或者

在#temp表中处理它:

Select * into #TempTable from SourceTable
ALTER TABLE tempdb.dbo.#TempTable ADD SlNo INT IDENTITY(1,1) ;

Select * from #TempTable
Run Code Online (Sandbox Code Playgroud)