SQL Server查询。我记得我发现了一种生成序列号的方法,它在选择数据时不使用ROW_NUMBER函数。但我现在不记得了
就像这样:
DECLARE @num int
SET @num = 0
SELECT ??? as [Index], Name FROM Product
The result will be:
Index | Name
1 | Rug
2 | Water
3 | Oil
我记得吗?比如@num = @num + 1,在这里它使用了函数CAST或ISNULL或CONVERT或另一个(我不记得了,但我确定它不使用ROW_NUMBER()函数)
有办法吗?
使用Row_number()时的问题:
select Id, Case when [type] = 'abc' then 1 else 0 end as Classification,
???? as DisplayOrder
from Product
order by Classification, ..., ..., ...
???如何在这里使用Row_number()? 我尝试使用Row_number(按顺序(选择1)),但是“按分类排序,...”语句在生成Row_number之后运行。这意味着序列号是在order by statement动作之前生成的。
答案 0 :(得分:1)
尝试
使用Row_Number()
SELECT ROW_NUMBER() OVER(ORDER BY NEWID()) as [Index], Name FROM Product
编辑2:
使用Identity column
和Temporary Table
create table #x([Index] bigint identity(1,1),Name varchar(200))
insert into #x(Name)
SELECT Name FROM Product
select * from #x
drop table #x