在SQL查询中添加一列,使用游标时会增加一列

时间:2014-09-17 16:47:52

标签: sql sql-server cursor

使用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

,因此产生以下结果

result set

上面的表的排名是1两倍我希望RWET是1和JPMorgan 2,如果有第三个然后是3.(理想情况下我不希望第三个结果显示除非有数据)

如果我运行查询并且只有一个包含数据,例如JPMorgan,那么我希望排名为1.

希望一切都有意义。

1 个答案:

答案 0 :(得分:0)

在看了一段时间之后,我有一个顿悟,我将等级改为自动递增的ID列。

这解决了我的问题。