我在下面有一个查询,可以在 SQL Server 中选择一列中的值与另一列中的值之间的差异,但源表中的前两行。源表有三列(PK bigint、Pv float、Cash float)。
当我使用这个查询时,我得到的是一系列单行行集,而不是一个大行集。我可以将这些一个接一个地插入到一个临时表中,然后从中选择,但这意味着对于大型表,我最终会得到一个很大的临时表以及返回第一条记录的长时间延迟。
有没有办法将这个查询的结果作为一个单行集有效地后台处理?
declare @PK bigint
declare @Pv float
declare @Cash float
declare @Cash_minus_1 float
declare @Cash_minus_2 float
set @Cash_minus_1 = 0
set @Cash_minus_2 = 0
declare myCursor cursor fast_forward
for select PK, Pv, Cash from MyTable order by PK
for read only
open myCursor
fetch next from myCursor
into @PK, @Pv, @Cash
while @@FETCH_STATUS = 0
begin
select @PK, @Pv, @Cash, @Cash_minus_2
set @Cash_minus_2 = @Cash_minus_1
set @Cash_minus_1 = @Cash
fetch next from myCursor
into @PK, @Pv, @Cash
end
close myCursor
deallocate myCursor