下一个月减上一个月

我每一个月都是累加的数,比如1月是100 2月是150 3月是160 我需要显示 1月就是100自己,2月就是150-100,3月就是160-150 这个sql怎么写。oracle

powerli 发布于 2022-7-12 13:33
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
powerliLv4初级互助
发布于2022-7-19 14:27

用两套sql

最佳回答
0
CD20160914Lv8专家互助
发布于2022-7-12 13:34(编辑于 2022-7-12 13:57)

用分析函数。。lag就是上一条记录,lead是下一条记录...

select 

tmp.ORDER_DATE,

tmp.PRODUCT_ID,

tmp.QTY,

tmp.上一天日期,

t2.qty as 上一天数量,

tmp.qty-nvl(t2.qty,0) as 相减的数量

from (

select 

t1.*,

lag(t1.order_date,1) over (order by order_date) as 上一天日期

 

 from (

select to_date('25-09-2021','dd-mm-yyyy') order_date,1000 product_id,100 qty from dual union all

select to_date('26-09-2021','dd-mm-yyyy'),2000,150 from dual union all

select to_date('27-09-2021','dd-mm-yyyy'),1000,160 from dual union all

select to_date('28-09-2021','dd-mm-yyyy'),2000,120 from dual union all

select to_date('29-09-2021','dd-mm-yyyy'),2000,200 from dual union all

select to_date('30-09-2021','dd-mm-yyyy'),1000,90 from dual) t1) tmp

left join  (

select to_date('25-09-2021','dd-mm-yyyy') order_date,1000 product_id,100 qty from dual union all

select to_date('26-09-2021','dd-mm-yyyy'),2000,150 from dual union all

select to_date('27-09-2021','dd-mm-yyyy'),1000,160 from dual union all

select to_date('28-09-2021','dd-mm-yyyy'),2000,120 from dual union all

select to_date('29-09-2021','dd-mm-yyyy'),2000,200 from dual union all

select to_date('30-09-2021','dd-mm-yyyy'),1000,90 from dual) t2 on tmp.上一天日期=t2.order_date

order by tmp.order_date

image.png

  • 1关注人数
  • 445浏览人数
  • 最后回答于:2022-7-19 14:27
    请选择关闭问题的原因
    确定 取消
    返回顶部