统计从第一次发货后每三个月的金额汇总

如下图所示,我数据库里面有店铺,数量,金额,出货日期,现在想按第一次出货日开始计算每三个月的数量跟金额汇总,能否实现:(注:每个店铺的第一次发货日期不一定相同。)

image.png

image.png

FineReport 用户C3501514 发布于 2023-8-3 14:19 (编辑于 2023-8-3 16:02)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
坚定的小帆薯Lv7高级互助
发布于2023-8-3 14:42(编辑于 2023-8-3 14:58)

可以实现的,直接用条件判断即可的

你需要几个三个月数据,还是产生数据均要归集到某个三个月的中

---------------------------

如果是只要特定的区间端的数据,比如0-3月,4-6月这种,可以用if判断,可精确到具体日期

如果是所有划分,用整除,向上取整即可,在按照3月数汇总即可

image.png

最佳回答
0
CD20160914Lv8专家互助
发布于2023-8-3 16:15(编辑于 2023-8-3 16:20)

直接类似这样写吧,最后只要1的结果就可以了,我使用的时oracel,你改成类似你的数据库语法就行了

with tmp as (

select 'a店铺' as dpname,'2022-01-15' as mytime, 15 as value_s from dual

union all

select 'a店铺' as dpname,'2022-02-15' as mytime, 30 as value_s from dual

union all

select 'a店铺' as dpname,'2022-03-06' as mytime, 16 as value_s from dual

union all

select 'a店铺' as dpname,'2022-06-18' as mytime, 25 as value_s from dual

union all

select 'b店铺' as dpname,'2022-04-12' as mytime, 100 as value_s from dual

select 

a.*,

b.minmytime as "发货最小时间",

case when to_date(a.mytime,'yyyy-mm-dd')<=add_months(to_date(b.minmytime,'yyyy-mm-dd'),3) then 1 else 0 end as "是否需要" 

from tmp a

 left join 

 (

select dpname,min(mytime) as minmytime from tmp

group by dpname) b on a.dpname=b.dpname

a店铺最小发货时间2022-01-15,那么往后推3个月是2022-04-15,那么最后2022-06-18这一个数据就不要了。你再套一个子查询就可以了。。

[思路是把每个店铺的的最小发货时间取出来。再用店铺名称关联一下,然后把最小发货时间+3个月后与它每个的时间对比一个,这样多一个辅助列,最后就只取是否需要为1的就可以了]

image.png

子查询前

image.png

子查询后

image.png

  • 坚定的小帆薯 坚定的小帆薯 你这个取数第一个三月的,主要不是只需要第一个三月的数据即可吖,还有第二个三月,第三个三月......
    2023-08-03 17:09 
  • CD20160914 CD20160914 回复 坚定的小帆薯 按你看仔细。他的需求就是说的是每个店铺的最小发货日期,我现在就是取的每个店铺最小的发货日期。,你仔细看我的截图生成的数据,每个店铺的最小日期是不一样的!
    2023-08-03 17:15 
  • CD20160914 CD20160914 回复 坚定的小帆薯 那我有可能理解错误。我只看到它要从最小的发货日期来。后面的具体计算逻辑没有明白他要如何计算
    2023-08-03 17:17 
  • 用户C3501514 用户C3501514(提问者) 谢谢了。
    2023-08-03 17:22 
  • 坚定的小帆薯 坚定的小帆薯 回复 CD20160914 嗯嗯,这个店铺发货日期直接min即可,题主已经解决了,主要是所属3月区间
    2023-08-03 17:57 
  • 3关注人数
  • 366浏览人数
  • 最后回答于:2023-8-3 16:20
    请选择关闭问题的原因
    确定 取消
    返回顶部