我知道这个问题可能听起来像是重复。然而,尽管我发现了类似的问题,但我没有得到任何确切的答案我不想删除从查询返回的任何重复值。 我想要的是获取一个唯一标识符,例如从sp 返回的结果的序列号。我尝试使用Row_Number()。但是,即使这样也行不通,因为它应该基于非重复列进行分区。我的结果不需要非重复列。排名和密集排名也在图片之外。那么,我该怎么做才能获得唯一标识每一行的序列号类型的列。这些行也应该是int。这是一个例子:
empName empSalary
Peter 10000
Schott 20000
Schott 10000
表应该还有一个这样的列:
Slno empName empSalary
1 Peter 10000
2 Schott 20000
3 Schott 10000
答案 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
这将为表格中的每一行生成唯一编号。这是你在寻找什么或在这里遗漏的东西