销量排名,使用临时表,不使用函数和变量情况下的实现
--有销售表如下,销售人员名称及销售额(万元)
create table #temp(name nvarchar(32),saleroom int)
insert into #temp(name,saleroom) values('关羽',500)
insert into #temp(name,saleroom) values('张飞',400)
insert into #temp(name,saleroom) values('赵云',410)
insert into #temp(name,saleroom) values('马超',430)
insert into #temp(name,saleroom) values('黄忠',350)
--增加排名字段的同时,转存到临时表(应对非SQL Server没有表变量的情况下的使用)
select Null as ID,* into #Report from #temp
--当前销售代表的销量(Report)和所有销售代表比较(AllReport),得出比自己销量高的代表有多少个。
--而自己的排名,就是销量比我高的人数+1
Update #Report
Set id = (Select Count(*) + 1 From #Report AllReport Where Report.saleroom < AllReport.saleroom)
From #Report Report
select id as N'销售排名',name as N'销售代表',saleroom as N'销售额(万元)' from #Report
drop table #Report
--结束
drop table #temp