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

时间:2016-10-10 07:37:50

标签: sql-server stored-procedures

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

 empName empSalary
 Peter   10000
 Schott  20000
 Schott  10000

表应该还有一个这样的列:

Slno  empName  empSalary
 1     Peter    10000
 2     Schott   20000
 3     Schott   10000

2 个答案:

答案 0 :(得分:2)

如果您不关心订购:

Select ROW_NUMBER() over (order by (Select 1)) as SlNo ,*
from table

OR

在#temp表中处理它:

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

Select * from #TempTable

答案 1 :(得分:1)

对我来说,它看起来非常直截了当。

Select ROW_NUMBER() Over(Order by empName asc , empSalary desc) as Slno,
       empName,
       empSalary
From yourtable 

这将为表格中的每一行生成唯一编号。这是你在寻找什么或在这里遗漏的东西

相关问题