关于同比环比SQL语句怎么写,使用frdamo中的订单明细和订单表不能在单元格中计算和过滤

image.png

FineReport qianzhiwen 发布于 2020-10-9 11:30 (编辑于 2020-10-9 11:33)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
1
gloria5Lv6见习互助
发布于2020-10-9 15:02

sql语句分别计算出当前值、同期值、上期值,之后进行关联

PS:1月份的环比数据没想出来

select t.m,t.ym,
	  t.销量,
	  t1.销量 同期,
	  (case when t1.销量 is null then '' 
	  	else (t.销量-t1.销量)/t1.销量 end) 同比,
	  t2.销量 上期,
	  (case when t2.销量 is null then '' 
	  	else (t.销量-t2.销量)/t2.销量 end) 环比
from 
(
select strftime('%m',b.订购日期)+0 m,
	  strftime('%Y-%m',b.订购日期) ym,
	  sum(a.数量) 销量
from 订单明细 a
	left join 订单 b on a.订单ID=b.订单ID
where strftime('%Y',b.订购日期) = '${y}'
group by strftime('%Y-%m',b.订购日期)
) t
left join
(
select strftime('%m',b.订购日期)+0 m,
	  strftime('%Y-%m',b.订购日期) ym,
	  sum(a.数量) 销量
from 订单明细 a
	left join 订单 b on a.订单ID=b.订单ID
where strftime('%Y',b.订购日期) = '${y-1}'
group by strftime('%Y-%m',b.订购日期)
) t1 on t.m=t1.m
left join
(
select (case when strftime('%m',b.订购日期)+0 <=11
		then strftime('%m',b.订购日期)+1 end) m,
	  strftime('%Y-%m',b.订购日期) ym,
	  sum(a.数量) 销量
from 订单明细 a
	left join 订单 b on a.订单ID=b.订单ID
where strftime('%Y',b.订购日期) = '${y}'
group by strftime('%Y-%m',b.订购日期)
) t2 on t.m=t2.m
最佳回答
0
krystal033Lv7高级互助
发布于2021-4-27 20:05
  • 2关注人数
  • 981浏览人数
  • 最后回答于:2021-4-27 20:05
    请选择关闭问题的原因
    确定 取消
    返回顶部