2014-11-01 71 views
0

下表代表客户拥有从2000到20XX的车辆。我试图从下面的表中创建输出,因为客户从2000年到2001年的车辆自动转到明年,即2002年到2003年等等。我尝试使用超前滞后分析功能,但它可以传递给只有下一行。跨多行的Oracle SQL级联信息

请亲切指导一下,如果可以在没有存储过程的情况下实现这种级联效应。

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

这是你想要的吗?

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

如果你想有一个累积和(我敢肯定,是不是在原来的queation),只需使用的sum()代替max()

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

不,我要第一排的reslt到添加到第二行,和第二行的新值第三行..等..像级联 – Awknewbie 2014-11-01 15:29:44

+0

谢谢戈登,让我检查出来。我一直认为总和分析函数将只给出所有行中定义分区内所有值的总和 – Awknewbie 2014-11-01 15:51:41

+0

@Awknewbie。 。 。通过'order by'子句,它变成累计和。 – 2014-11-01 16:01:21