使用SQL Server 2012。
我正在尝试使用游标对某些结果进行排名但遇到问题。
代码如下。
declare @companyid int
declare @tempTable table(rank int, companyname nvarchar(50), hedgevalue float)
declare c cursor for select id from gascompanies
open c
fetch next from c into @companyID
while @@FETCH_STATUS=0 begin
--insert into @tempTable([rank], companyName, hedgeValue)
select rank=count(*), gc.companyName as companyName, hedgevalue
from DayAheadSettings DAS
left outer join GasCompanies GC ON gc.ID = das.CompanyID
left outer join gashedges on gc.id = GasHedges.CompanyID
where nominatehedge = 0 and gc.ID = @companyid and hedgeDate = convert(date, GETDATE() + 1)
group by CompanyName, hedgevalue
fetch next from c into @companyid
end
close c
deallocate c
由于有3个公司ID
,因此产生以下结果
上面的表的排名是1两倍我希望RWET是1和JPMorgan 2,如果有第三个然后是3.(理想情况下我不希望第三个结果显示除非有数据)
如果我运行查询并且只有一个包含数据,例如JPMorgan,那么我希望排名为1.
希望一切都有意义。
答案 0 :(得分:0)
在看了一段时间之后,我有一个顿悟,我将等级改为自动递增的ID列。
这解决了我的问题。