我希望我的查询向我显示不具有连续序列的记录。例如,我有一个银行分期付款表,他们分配了一个instalmentID。
记录应该是有序的,例如instalmentIDs和value:
5 £10
4 £10
3 £10
2 £10
1 £10
我的数据记录如下:
-2 £10
-1 £10
0 £10
1 £10
以上是错误分期付款的示例。
我可以写下以下内容:
SELECT ORDERID
FROM INSTALMENTS
WHERE INSTALMENTID = 0
但我需要看到以更正的格式返回的结果,以便我可以填充临时表并运行一些更新。所以我的查询需要知道最后一个好序列是否为1然后需要将0, -1, -2
更改为2,3,4
答案 0 :(得分:0)
我的解释是,问题出现是因为某些应用程序从第一个installmentid中减去而不是在每个后续分期中添加它,从而产生2,3,4 0,-1,-2等等。您希望通过将序列恢复到原来的状态来解决问题。如果我的解释是正确的,那么你可以这样做:
select
case when installmentid=1 then 1 else abs(installmentid)+2 end newinstallmentid,
amount from installments
where orderid in
(select orderid from installments group by orderid having max(installmentid)=1)
order by newinstallmentid desc
中的示例