能够使用以下查询生成序列号
CREATE SEQUENCE seqno AS integer
START WITH 1;
SELECT t1.*,
(NEXT VALUE
FOR seqno) AS seqno
FROM
(SELECT l.TRANSACTION_ID,
l.HSN
FROM RWLINEITEM l
WHERE l.TRANSACTION_ID IN ('CS610-20-10003','CS610-20-10002')
GROUP BY l.TRANSACTION_ID,l.HSN) t1
这给出结果
例如,要求通过交易和HSN生成序列号
有什么方法可以得到这个结果。使用derby-10.13.1.1
您正在描述窗口功能row_number()
,此功能自10.4版开始在Derby中可用:
select
transaction_id,
hsn,
row_number() over(partition by transaction_id order by hsn) seqno
from rwlineitem l
where transaction_id in ('CS610-20-10003','CS610-20-10002')
我不清楚您为什么首先需要在子查询中进行汇总(您可能希望删除重复项),因此我删除了该部分;随时根据需要将其添加回去。可能将其表述为:
select distinct
transaction_id,
hsn,
dense_rank() over(partition by transaction_id order by hsn) seqno
from rwlineitem l
where transaction_id in ('CS610-20-10003','CS610-20-10002')