取出了本月数量、上月数量、去年累计数量,如何让本月、上月、去年默认为查询月份的数据,如下图所示

23.png

FineReport 帆软用户ytejrbmiBQ 发布于 2022-8-10 11:09 (编辑于 2022-8-10 11:31)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
仰望ingLv5见习互助
发布于2022-8-10 11:31(编辑于 2022-8-10 11:38)

sum((CASE substr(a.dbilldate,1,7) WHEN '${yyyyMM}' THEN A.nnum ELSE 0 END )) 本月数量,

sum((CASE substr(a.dbilldate,1,4) WHEN (to_char(to_date('${yyyyMM}' ,'yyyy-mm'),'yyyy')-1) THEN A.nnum ELSE 0 END )) 去年总量,

sum((CASE substr(a.dbilldate,1,7) WHEN to_char(add_months(to_date('${yyyyMM}' ,'yyyy-mm'),-1),'yyyy-mm') THEN A.nnum ELSE 0 END )) 上月数量

'${yyyyMM}' 这个为查询月份参数

不行的话就用left join 吧,用子查询分别把本月、上月、去年的数据先查出来,再关联起来

最佳回答
0
用户6NWif5139660Lv6资深互助
发布于2022-8-10 11:14(编辑于 2022-8-10 11:15)

那你分开查  然后left join 关联起来

上月 就 月份减一

上年 就 年份减一

年月是一个字段的话 就left  和 right 截取出来 减一

不知道你能不能理解

最佳回答
0
yzm339714Lv6中级互助
发布于2022-8-10 11:18(编辑于 2022-8-10 11:19)

那你 case when   的 when 后面 的 sysdate 直接改成参数名就好了 ‘{rq}’ 

  • 帆软用户ytejrbmiBQ 帆软用户ytejrbmiBQ(提问者) 我改成了参数,但是查询报错,如上图
    2022-08-10 11:30 
  • yzm339714 yzm339714 回复 帆软用户ytejrbmiBQ(提问者) 改成 楼下 仰望ing 大佬的那样,你前面 case 有处理日期,你后面if 里面不用加的, 然后如果你需要做空值判断,当空值的时候 不要 \"\" 改成 sysdate
    2022-08-10 11:35 
最佳回答
0
Qian同学Lv6见习互助
发布于2022-8-10 11:31
select  *  from  A  left  join  A  b    --本月 on a.月份-1=b.月份  --上个月 left join A c on a.年份-1=c.年份  --去年

  • 5关注人数
  • 406浏览人数
  • 最后回答于:2022-8-10 11:38
    请选择关闭问题的原因
    确定 取消
    返回顶部