给出以下表格结构
Magic
我想从底部开始并选择所有具有负余额的行,并在找到贷方余额后停止。对于上面的示例数据,我希望结果如下
CustomerID | Balance | Date
1 | 100.00 | 07-09-2016
1 | -50.00 | 08-09-2016
1 | -60.00 | 09-09-2016
1 | 500.00 | 10-09-2016
1 | 600.00 | 11-09-2016
1 | -100.00 | 12-09-2016
1 | -200.00 | 13-09-2016
1 | -400.00 | 14-09-2016
1 | -500.00 | 15-09-2016
我如何实现这一目标?
感谢。
答案 0 :(得分:4)
最简单的方法是使用NO EXISTS
。如果没有其他具有较晚日期的行具有正余额,则返回一行:
select *
from tablename t1
where not exists (select * from tablename t2
where t2.Balance > 0
and t2.date > t1.date)
或者,让子查询返回带有余额>的最新日期。 0:
select *
from tablename
where date > (select max(date) from tablename where balance > 0)