时间序列构建与为已经有的代码集构建时间匹配

SELECTTL."年月",

(SELECT SUM (case when bd.shkzg='S' then DMBTR when bd.shkzg='H' then -1*DMBTR else 0 end)

from SAPHANADB.knvv kv

left join SAPHANADB.but000 bt

on bt.client=kv.mandt

and bt.partner=kv.kunnr

left join SAPHANADB.ukmbp_CMS_SGM us on us.partner=kv.kunnr

and kv.mandt=us.client

left join SAPHANADB.KNA1 ka

on ka.mandt=800 and ka.kunnr=kv.kunnr

left join SAPHANADB.BSID BD

ON BD.MANDT=KV.MANDT

AND BD.BUKRS=KV.VKORG

AND BD.KUNNR=KV.KUNNR

where kv.mandt=800

and ADD_DAYS(bd.zfbdt,bd.zbd1t+zbd2t+bd.zbd3t)<=last_Day(TL."年月")

and us.CREDIT_SGMNT=1000)

FROM

(select to_char(add_months(current_date, -1 * zlist), 'yyyymm') "年月"

from SAPHANADB.zlist

where add_months_last(current_date, -1 * zlist) >= '2021-04-01') TL

问题的处理情景:发现在你只有列数据列,并且列数据集通过多重嵌套子查询取出来的,这时候,你想找到,直到某月所发生的和是多少,并且要按照月去显示,只有构造数据集去显示。

首先观察主表为一个月份表,直接从最后看,表名为TL,这里的TL是一个由子查询所构成的表,一个子查询构成了我们的整体表,里面的结果,会构成一个从2021年4月1日到目前日期的时间序列。

二、select后面,跟着是二个取列的项,其中一个是子查询,第一个取的是时间,第二个取的是一个子查询,我们需要构建一个与主表时间有关的相关性子查询。

三、重点是对子查询做分解,子查询是个四表的中数据的数和,内部用case做了一个条件限制,做了一个标识不同,数据内部互相求和,数据来源一个链接的表之中,并且这里的时间,小于主表中的时间。这样一个时间序列就完成呢,内部的求和就是一个,按月份累加的求和。就是我们想要的数据,最后的部分是可以加限制条件的作为过滤的

四、最后的结果是得到一个按照月份排列,累计求和的数据列。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值