我正在处理oracle中的一些数据,而且我需要做的计算数据略显不完整。 该表看起来像这样(客户不是唯一的):
customer | status_From | status_To | date_Of_Change
我要做的是获取这些数据:
Customer (grouped by) | status | days in status (sum for customer as status)
其中status将是从下一行的日期中减去一行的日期。相同的状态可能重复出现,有时是顺序出现,有时不出现。如果没有其他行,我想使用当前日期进行数学运算。
基本上,它是
select customer,
SUM(CASE WHEN status_From LIKE 'A%' THEN (?Date of next row?) - date_of_change ELSE 0 END) AS DaysAsA,
from Log
GROUP BY customer
有没有办法可以在oracle中执行此操作而无需进行多次查询(在coldfusion中)并循环遍历它们?
答案 0 :(得分:2)
使用lead()分析函数来检索下一行的值:
select
..
,lead(t.status, 1, 0) over(order by t.status) nextStatus
from
table1 t