查找与顺序序列匹配的记录

时间:2015-01-24 10:02:05

标签: sql sql-server sql-server-2008

我希望我的查询向我显示不具有连续序列的记录。例如,我有一个银行分期付款表,他们分配了一个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

1 个答案:

答案 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 

SQLFIDDLE

中的示例