sql求同期值

求同期销售额 sql语句怎么写呀

帆软用户JAQZIqxWYw 发布于 2022-7-12 09:36
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
snrtuemcLv8专家互助
发布于2022-7-12 09:37(编辑于 2022-7-12 09:38)

参考

with abc as(select sum((a.单价-a.进价)*a.数量*(1-a.折扣)) as lr,strftime('%Y', 订购日期) as nian,strftime('%m', 订购日期) as yue from 订单明细 a left join 订单 b on a.订单ID = b.订单ID group by nian,yue),e as (select nian as nian1,yue as yue1,lr as lr1 from abc where nian = '${aa}'),f as (select nian as nian2,yue as yue2,lr as lr2 from abc where nian = '${aa -1}') 

select (e.nian1||'-'||e.yue1) as 年月,e.lr1 as 销售额,case when lr2 > 0 then (((lr1-lr2)/lr2*100)||'%') else '同期没有数据' end 同比 from e

left join f on e.yue1 = f.yue2

================

自带内置FRDemo数据库

image.png

最佳回答
1
Z4u3z1Lv6专家互助
发布于2022-7-12 09:37

数据库类型 + 同比  度娘 N多方案

最佳回答
0
shinger@126.comLv2见习互助
发布于2022-7-12 11:24

set nocount on 

declare @sdate datetime,@edate datetime --本期开始结束日期

declare @sdate1 datetime,@edate1 datetime  --去年同月开始结束日期

set @sdate='${年月}'+'-01'       --传入年月以2022-06格式

set @edate=dateadd(ms,-3,DATEADD(MONTH,1,@sdate))

set @sdate1=dateadd(year,-1,@sdate)

set @edate1=dateadd(year,-1,@edate)

--本期数据

select 店铺,sum(销售额) as 销售额

  into #本期

  from 销售数据 

  where 销售日期 between @sdate and @edate

  group by 店铺

--去年同期数据

select 店铺,sum(销售额) as 销售额

  into #同期

  from 销售数据 

  where 销售日期 between @sdate1 and @edate1

  group by 店铺

--输出结果

select a.店铺,a.销售额,ISNULL(b.销售额,0) 同期销售额

 from #本期 a

  left join #同期 b on a.店铺=b.店铺

set nocount off

这是MSSQL的代码,同比在报表里面用单元格公式去算。其他数据库大同小异,都可以把本期和同期分别写入2个临时表再关联

  • 3关注人数
  • 401浏览人数
  • 最后回答于:2022-7-12 11:24
    请选择关闭问题的原因
    确定 取消
    返回顶部