如何在同一个月份后增加同期

我想在本月收入的后面增加一个同期收入image.png

但是数据库中并没有同期指标,仅有每个月的收入请问我应该怎么写呢

这是现在的sql

select month_id, nonoil_income as "当月收入" from ywgl_csrq_fy_hy where month_id between substr(current_date() , 1 ,4)||'01' and  translate(substr(current_date() , 1 ,7),'-','')

FineReport 用户x076327 发布于 2021-11-25 14:14
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
牛~~~Lv6中级互助
发布于2021-11-25 14:16(编辑于 2021-11-25 14:48)

你看你同期的概念是啥。同比还是环比。利用对应的时间过滤汇总就行了

结构如下,仅供参考

select  a.month_id ,当月收入 ,去年当月收入 from( select  month_id , nonoil_income as "当月收入"  from ywgl_csrq_fy_hy  where month_id between 202101 and  202111 ) a left join( select  month_id , nonoil_income as "去年当月收入"  from ywgl_csrq_fy_hy  where month_id between 202001 and  202011 ) b on a.month_id = b.month_id - 12

  • 用户x076327 用户x076327(提问者) 就是上一年同月的数值
    2021-11-25 14:19 
  • 牛~~~ 牛~~~ 回复 用户x076327(提问者) 看你是什么数据库,除了mysql,其他数据库基本都有开窗函数用于计算同比的
    2021-11-25 14:22 
  • 牛~~~ 牛~~~ 回复 用户x076327(提问者) 或者就是再写个SQL计算去年的每个月,然后利用 join关联起来。关联条件就是 a.日期 = b.日期 -12 个月
    2021-11-25 14:25 
  • 用户x076327 用户x076327(提问者) 回复 牛~~~ 那应该怎么写呢?同一张表还能写join吗?那不就出现了两个日期了?
    2021-11-25 14:38 
最佳回答
1
丶尛伟Lv6初级互助
发布于2021-11-25 15:21

SELECT 

T1.month_id,T1.当月收入,T2.去年收入

FROM

(

select month_id, nonoil_income as "当月收入" from ywgl_csrq_fy_hy where month_id between substr(current_date() , 1 ,4)||'01' and  translate(substr(current_date() , 1 ,7),'-','')

) t1

left join

(

select month_id, nonoil_income as "去年收入" from ywgl_csrq_fy_hy where month_id between substr(DATE_ADD(CURRENT_DATE(),INTERVAL -1 YEAR) , 1 ,4)||'01' and  translate(substr(DATE_ADD(CURRENT_DATE(),INTERVAL -1 YEAR) , 1 ,7),'-','')

) t2

on t1.month_id = LEFT(t2.month_id,4) - 1 || right(t2.month_id,2)

关联条件你试一下,应该是这样没问题

  • 3关注人数
  • 288浏览人数
  • 最后回答于:2021-11-25 15:21
    请选择关闭问题的原因
    确定 取消
    返回顶部