SQL中嵌套if和函数、月份

根据输入的日期date,如输入2024-06-26,日期>=25号,就查询本月数据,如:day>=2024-06-25 and day<=2024-06-26;

如果日期输入日期<25号,就查询上个月25号到今天的数据,如:day>=2024-05-25 and day<=2024-06-24。

image.png

FineReport 帆软用户W0HmaWtan0 发布于 2024-6-5 15:14 (编辑于 2024-6-5 15:15)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
1
Z4u3z1Lv6专家互助
发布于2024-6-5 15:21(编辑于 2024-6-5 15:22)

where 1=1 ${if(day(pdate)>=25," and 字段>='"+FORMAT(pdate,"yyyy-MM-25")+"' and 字段<'"+FORMAT(MONTHDELTA(pdate,1),"yyyy-MM-26")+"'"," and 字段>='"+FORMAT(MONTHDELTA(pdate,-1),"yyyy-MM-25")+"' and 字段<='"+FORMAT(pdate,"yyyy-MM-24")+"'")}

  • 帆软用户W0HmaWtan0 帆软用户W0HmaWtan0(提问者) SELECT r.`name` as 指标名称, d.report_date as 日期, r.level_type as 级别, SUM(d.result_value) as 结果 FROM report_data d LEFT JOIN report_indicator r ON r.id = d.report_indicator_id WHERE 1=1 ${if(day(pdate)>=25," and d.report_date>='"+FORMAT(pdate,"yyyy-MM-25")+"' and d.report_date='"+FORMAT(MONTHDELTA(pdate,-1),"yyyy-MM-25")+"' and d.report_date<'"+pdate+"'")} AND r.date_type = '1' AND r.value_type = '0' AND r.data_type = '10' GROUP BY r.`name`, r.level_type, d.report_date
    2024-06-05 16:20 
  • 1关注人数
  • 109浏览人数
  • 最后回答于:2024-6-5 15:22
    请选择关闭问题的原因
    确定 取消
    返回顶部