0
luojian0323 Lv7 资深互助 发布于2021-7-15 11:13(编辑于 2021-7-15 12:26)
你这个逻辑也是有漏洞的,万一七月未发生业务,六月也未发生呢?
所以最有效的办法 是把每个客户小于当前月份的最后一个发生业务的月份查出来
并把最后一次发生业务月份的余额也查出来。然后union到当前月分表中
例如我这组数据:
处理后结果:
sql:
with yuer as (select 'A' ccusname客户名称,
100 mb期初余额,
200 me期末余额,
'202107' iyperiod年月
union all
select
'B' ccusname客户名称,
110 mb期初余额,
290 me期末余额,
'202105' iyperiod年月
union all
select
'B' ccusname客户名称,
180 mb期初余额,
390 me期末余额,
'202102' iyperiod年月
union all
select
'C' ccusname客户名称,
190 mb期初余额,
490 me期末余额,
'202102' iyperiod年月
union all
select
'C' ccusname客户名称,
390 mb期初余额,
190 me期末余额,
'202107' iyperiod年月)
select a.* from yuer a
where iyperiod年月='202107'
union all
select a.* from yuer a where a.iyperiod年月<'202107' and a.iyperiod年月 in (select max(iyperiod年月) from yuer where ccusname客户名称=a.ccusname客户名称 and me期末余额>0 )
回学然(提问者)
- 我的意思是六月未发生业务的再向上一个月查询,以此类推,跟您说的应该是一个意思,就是不知道怎么写
luojian0323 回复 回学然(提问者)
- 表结构和样本数据发一份。我帮你写。不过不一定能立马写出来
回学然(提问者)
- 数据库表里面有以下几列,ccusname客户名称,mb期初余额,me期末余额,iyperiod年月
luojian0323 回复 擎天小胖(提问者)
- 然后把查询到的期末余额相加就是你要的所有客户期末余额。
取消
评论