一道sql笔试题
Table bidrank(vendorcode char(10),price money,submittime datetime,rank int)是一个用来保存供应商报价资料的表,
其中vendorcode:是供应商代码
price:为报价
rank:为供应商报价排名
问题:下面是用T-sql语言给供应商加上排名的程序。
排名规则为:名次按报价从大到小排列,如果价格相同,则按时间先后次序排名。
请在各空白处填上适当的语句,以实现这一功能。(假设排名前rank的初始值为0)
create procedure refreshRank_sp
as
declare @CurrentRank int ,@vendorCode nvarchar(20)
set @quoteByvendor= cursor scroll for
select vendorcode from bidrank _______________
open @quoteByvendo
________________________
select @CurrentRank=1
while(_____________)
begin
update bidrank
set rank=@CurrentRank
where vendorcode=@vendorcode
fetch next from @quoteByvendor into @vendorcode
select @CurrentRank=_____________________
end
return 0
go
各位大虾帮着看看,谢了
select vendorcode from bidrank k where not exists(select * from bidrank where (k.price=price and submittime <k.submittime) or (price <k.price))
fetch next from @quoteByvendor into @vendorcode
while @@fetch_status=0
select @CurrentRank=@CurrentRank+1
order by price desc
fetch next from @quoteByvendor into @vendorcode
@@fetch_status=0
@Curr
相关问答:
我有一个月和日组成的数字,有两组月和日
想在身份证号中挑选出在该该两组月日之间出生的人,不知道应该怎么写.
身份证号有可能是15位或者18位
月日组合的形式如下
10-17/04-20
月-日/月- ......
表中按datadate,tradeid为主键,也就是说tradeid会重复出现在不同天中,同一天的tradeid是不同的。现在我希望取一段时间范围内不重复的tradeid,且只要每个tradeid的最后一次出现的那条。sql语句该怎么写
: ......
表a(没有主键)
id name age
----------- ---------- -----------
1 chenqin& ......
create table jskb(
编号 int identity(1,1) primary key not null,
姓名 varchar(20) not null,
性别 char(1) not null ,
授课名 varchar(10) not null,
教室号 int(10)
)
错哪呢?
cre ......
[code=select a.fyear,b.fname,sum(a.fendbal) as fendbal,
'1月'=case when fperiod=1 then sum(a.fendbal) else 0 end ,
'2月'=case when fperiod=2 then sum(a.fendbal) else 0 end ,
& ......