我有一个包含两个字段的表:ID 字段(FID
)作为主键,并且Qty
都是整数。我需要查询此表并使用 QTY 字段添加两个附加字段作为序列序列,以便我可以获得如下结果:
table1
-------------------------------------
ID Qty range_begin range_end
50 2 1 2
53 1 3 3
65 3 4 6
67 2 7 8
range_begin
字段从 1 开始,下一条记录应该是range_end + 1
. 和range_end = last range_end + Qty
我尝试使用上下文变量来编写它 像这样
我首先将所有变量设置为空
rdb$set_context('USER_TRANSACTION', 'range_end', null);
rdb$set_context('USER_TRANSACTION', 'range_begin', null);
比我开始查询:
Select
rdb$get_context('USER_TRANSACTION', 'range_begin'),
rdb$set_context('USER_TRANSACTION', 'range_begin', COALESCE(CAST(rdb$get_context('USER_TRANSACTION', 'range_end') AS INTEGER), 0) + 1)),
rdb$get_context('USER_TRANSACTION', 'range_end'),
rdb$set_context('USER_TRANSACTION', 'range_end', COALESCE(CAST(rdb$get_context('USER_TRANSACTION', 'range_end') AS INTEGER), 0) + Qty)),
Qty
from table1 where ...
但我没能得到正确的顺序。我还尝试添加更多变量和其他东西,但没有一个对我有用,所以应该如何完成,以便我可以使用单选查询?
我使用的是 FireBird 2.5,答案没有必要使用上下文变量。