select 货物名,sum() 库存数量,sum() 最后一次出库数量,sum() 最后一次入库数量 from
(
select out.货物名,sum(out.入库数量)-sum(in.出库数量),0,0
from out,in where   out.货物名(+)=in.入库数量
group by  out.货物名
union 
select in.货物名,0,0,in.出库数量 from in where 出库时间=(select distinct max(出库时间)from in)
union
select out.货物名,0,out.入库数量,0 from out where 入库时间=(select distinct max(入库时间)from out)
)大概意思是这样

解决方案 »

  1.   

    select 货物名,sum(入库数量-出库数量) 库存数量,sum(decode(substr(最后一次出库数量,1,1),'1',substr(最后一次出库数量,2))),sum(decode(substr(最后一次出库数量,1,1),'2',substr(最后一次出库数量,2))) from 
    (select 货物名,sum(入库数量) 入库数量,'1'||max(最后一次入库数量) 最后一次入库数量 from 
    (select 货物名, 入库数量,last_value(入库数量) over(order by 入库时间) 最后一次入库数量 from table_out) group by 货物名
    union all
    select 货物名,sum(出库数量) 出库数量,'2'||max(最后一次出库数量) 最后一次出库数量 from 
    (select 货物名, 出库数量,last_value(出库数量) over(order by 出库时间) 最后一次出库数量 from table_in) group by 货物名)
    group by 货物名