同一数据集利用日期参数计算当月天数执行不同sql

同一数据集利用日期参数计算当月天数,大于7天执行sql1,小于等于天执行sql2,mysql

FineReport shanght 发布于 2019-12-3 17:43
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
圣体叶小凡Lv6高级互助
发布于2019-12-3 17:46

qq已沟通解决;

${IF(DAY(endtime)>7,

"

SELECT a.city_new,COUNT(a.id) amount

FROM `fact_gongdan_outlets` a 

WHERE 1=1 ${IF(len(city) == 0,"","and a.city_new in ('" + city + "')")}

AND a.create_date>= '"+ DATEINMONTH(endtime,1) +"'

AND a.create_date<= '"+ DATEDELTA(endtime,-7)+"'

"+if(len(city)==0,"","and a.city in ('" + city + "')")+"

AND a.state!='confirmed_done'

AND a.wancheng_time<=168

AND a.`city_new` IS NOT NULL

GROUP BY a.city_new

UNION ALL

SELECT '全国',COUNT(a.id) amount

FROM `fact_gongdan_outlets` a 

WHERE a.create_date>='"+ DATEINMONTH(endtime,1) +"'

AND a.create_date<='"+ DATEDELTA(endtime,-7)+"'

"+if(len(city)==0,"","and a.city in ('" + city + "')")+"

AND a.state='confirmed_done'

AND a.wancheng_time<=168

AND a.`city_new` IS NOT NULL

",

"

SELECT a.city_new,COUNT(a.id) amount

FROM `fact_gongdan_outlets` a 

WHERE 1=1 ${IF(len(city) == 0,"","and a.city_new in ('" + city + "')")}

AND a.create_date>= '"+ DATEINMONTH(MONTHDELTA(endtime,-1),1) +"'

AND a.create_date<= '"+ DATEDELTA(endtime,-7) +"'

"+if(len(city)==0,"","and a.city in ('" + city + "')")+"

AND a.state='confirmed_done'

AND a.wancheng_time<=168

AND a.`city_new` IS NOT NULL

GROUP BY a.city_new

UNION ALL

SELECT '全国',COUNT(a.id) amount

FROM `fact_gongdan_outlets` a 

WHERE a.create_date>= '"+ DATEINMONTH(MONTHDELTA(endtime,-1),1) +"'

AND a.create_date<= '"+ DATEDELTA(endtime,-7) +"'

"+if(len(city)==0,"","and a.city in ('" + city + "')")+"

AND a.state='confirmed_done'

AND a.wancheng_time<=168

AND a.`city_new` IS NOT NULL

")}


最佳回答
0
historyLv4初级互助
发布于2019-12-3 17:46

用存储过程是否可以解决


最佳回答
0
Edward_DDLv5中级互助
发布于2019-12-3 17:50

把两个sql都整出来,做成两个数据集,然后再做成关联数据集,把当月天数做成参数(帆软内置公式好像有计算当前日期当前月天数的,没有就用公式读取数据集筛的结果),然后用参数绝对用哪个数据集

  • 4关注人数
  • 605浏览人数
  • 最后回答于:2019-12-3 17:50
    请选择关闭问题的原因
    确定 取消
    返回顶部