跨多行的Oracle SQL级联信息

时间:2014-11-01 08:26:23

标签: sql oracle

下表显示客户拥有的车辆从2000到20XX。我试图从下表创建输出,因为客户从2000年到2001年有车辆,它会自动传递到明年,即2002年到2003年等等。我尝试使用超前滞后分析功能,但它可以传递给仅下一行。

请指导是否可以在没有存储过程的情况下实现此级联效果。

customer  vehicle    start  end 
--------------------------------------
A            0        2000   2001
A            1       2002   2003
A            1        2003   2004
A            0        2004   2015 .....contd

预期输出

customer  vehicle    start  end 
------------------------------------
A            0        2000   2001
A            1        2002   2003
A            2        2003   2004
A            2        2004   2005 ...contd

1 个答案:

答案 0 :(得分:1)

这是你想要的吗?

select customer,
       max(vehicle) over (partition by customer order by start) as vehicle,
       start, end
from table t;

如果你想要一个累积金额(我很确定不在原始排期中),只需使用sum()代替max()

select customer,
       sum(vehicle) over (partition by customer order by start) as vehicle,
       start, end
from table t;