1、如上图需要统计 current_num 的后面减前面一个的差值with test as(select rownum rn, a.place_name,b.name,b.no,b.read_type,c.collection_date,c.current_num from T_ENERGY_WORKPLACE_INFO a,T_ENERGY_GAUGES_INFO b,t_energy_gauges_read cwhere a.workplace_id=b.workplace_id and b.gauges_id=c.gauges_idand b.WORKPLACE_ID=8acea74e3e0
2、63e98013e10c7d3fb01daorder by a.place_name,b.name,c.collection_date )select d.*,d.current_num-e.current_num as temp from test d,test ewhere e.rn+1=d.rn(+) order by d.rn; with 是根据需求申明一个数据表如下图然后 select 的时候用 e 表 rn+1 来和 d.rn 来作条件,然后再去求差值最终得的结果为注意如果我们只用?传参数的时候,如果不用 with 申明一张表,就或要传两个参数,实际上只有一个,所以 with 解决参数只需要传一个参数的问题