mysql企业级实战

select G.*
from
(select T.dt,sum(case when T2.mdt>=T.dt then 1 else 0 end) np
from
(select left(erdat,6) dt,matnr
from SAPHANADB.vbap
where mandt=800
group by left(erdat,6),matnr) T
left join (
select matnr,min(left(erdat,6)) mdt
from SAPHANADB.vbap
where mandt=800 group by matnr
) T2 on T.matnr=T2.matnr
group by T.dt) G
order by G.dt desc

matnr物料号   erdat带有年月日的时间

直接上代码

想要做什么:取出第一次matnr第一次出现在企业中时间,以及月份,和以后新增的matnr出现不重复,并不断计算新增的matnr出现的次数,最后按照月份进行分组

解题思路:

第一步:首先取出日期的年月,以及想要的物料号,并且做一个物料号,和月份的分组,这个时候会得到一个有重复月份,不同物料的数据,但是我们想要的并不是这样的。而是物料首次出现的时间

第二步:取出每个物料号出现的最小时间,和物料号,最后按照物料号分组

第三步:二张子查询构成的表之间做一个左链接,精华部分,按照第一张表所求得的月份进行分组。分组发生在查询的前面,这里求出月份

第四步:利用case  when做了一个条件判断。如果,最小的物料时间段大于里面中的一个,记作一个,做了一个新增计数

第五步:主表构建完成,取出全部数据。做一个排序

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值