如下图,if判断里面的Sql,并使用YEARDELTA函数,现在报语法错误,该如何解决

已解决

FineReport Q4512K41FF 发布于 2022-9-30 15:59 (编辑于 2022-11-7 14:31)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
snrtuemcLv8专家互助
发布于2022-9-30 16:00(编辑于 2022-9-30 16:40)

你这个的拼接才可以,拷贝全部语句,帮你修改

=========================

${if(ywType="轻松控"," select a.area_name,a.sarea_name,b.market,c.ccusheadcode,d.ccusname,d.cusAttribute,d.ccusperson,sum(ISNULL(c.inatsum_bi,0)-isnull(c.thinatsum_bi,0))*b.prop_ywy AS 前年值, CASE a.area_name WHEN '赛蒙渠道' THEN '赛蒙' ELSE '明月' END AS nameStr from BI_sale_area_part a left join BI_cus_ywy b on a.market=b.market left join BI_sale_cinvcode_day c on b.ccusheadcode=c.ccusheadcode LEFT JOIN (select distinct ccusheadcode ,ccusname,ccusperson,cusAttribute from BI_customer) d ON c.ccusheadcode=d.ccusheadcode where 1=1 and a.area_name not in ('OEM横向','OEM直属','OEM外贸区','KA渠道') and c.cfree1_bi not like '%白包装%' and c.cfree1_bi not like '%赛蒙%' and ((convert(varchar(10),day_bi,23)>='"+YEARDELTA(stratDay,-2)+"' and convert(varchar(10),day_bi,23)<='"+YEARDELTA(day,-2)+"' ) ) GROUP BY b.market,c.ccusheadcode,b.prop_ywy,a.area_name,d.ccusname,d.ccusperson,d.cusAttribute,a.sarea_name ", " select a.area_name,a.sarea_name,b.market,c.ccusheadcode,d.ccusname,d.cusAttribute,d.ccusperson,sum(ISNULL(c.inatsum_bi,0)-isnull(c.thinatsum_bi,0))*b.prop_ywy AS 前年值, CASE a.area_name WHEN '赛蒙渠道' THEN '赛蒙' ELSE '明月' END AS nameStr from BI_sale_area_part a left join BI_cus_ywy b on a.market=b.market left join BI_sale_cinvcode_day c on b.ccusheadcode=c.ccusheadcode LEFT JOIN (select distinct ccusheadcode ,ccusname,ccusperson,cusAttribute from BI_customer) d ON c.ccusheadcode=d.ccusheadcode where 1=1 and a.area_name not in ('OEM横向','OEM直属','OEM外贸区','KA渠道') and c.cfree1_bi not like '%白包装%' and c.cfree1_bi not like '%赛蒙%' and c.cinvname_bi not like '%轻松控%' and ((convert(varchar(10),day_bi,23)>='"+YEARDELTA(stratDay,-2)+"' and convert(varchar(10),day_bi,23)<='"+YEARDELTA(day,-2)+"' ) ) GROUP BY b.market,c.ccusheadcode,b.prop_ywy,a.area_name,d.ccusname,d.ccusperson,d.cusAttribute,a.sarea_name ")}

  • Q4512K41FF Q4512K41FF(提问者) ${if(ywType=\"轻松控\",\" select a.area_name,a.sarea_name,b.market,c.ccusheadcode,d.ccusname,d.cusAttribute,d.ccusperson,sum(ISNULL(c.inatsum_bi,0)-isnull(c.thinatsum_bi,0))*b.prop_ywy AS 前年值, CASE a.area_name WHEN \'赛蒙渠道\' THEN \'赛蒙\' ELSE \'明月\' END AS nameStr from BI_sale_area_part a left join BI_cus_ywy b on a.market=b.market left join BI_sale_cinvcode_day c on b.ccusheadcode=c.ccusheadcode LEFT JOIN (select distinct ccusheadcode ,ccusname,ccusperson,cusAttribute from BI_customer) d ON c.ccusheadcode=d.ccusheadcode where 1=1 and a.area_name not in (\'OEM横向\',\'OEM直属\',\'OEM外贸区\',\'KA渠道\') and c.cfree1_bi not like \'%白包装%\' and c.cfree1_bi not like \'%赛蒙%\' and ((convert(varchar(10),day_bi,23)>=\'${YEARDELTA(stratDay,-2)}\' and convert(varchar(10),day_bi,23)<=\'${YEARDELTA(day,-2)}\' ) ) GROUP BY b.market,c.ccusheadcode,b.prop_ywy,a.area_name,d.ccusname,d.ccusperson,d.cusAttribute,a.sarea_name \", \" select a.area_name,a.sarea_name,b.market,c.ccusheadcode,d.ccusname,d.cusAttribute,d.ccusperson,sum(ISNULL(c.inatsum_bi,0)-isnull(c.thinatsum_bi,0))*b.prop_ywy AS 前年值, CASE a.area_name WHEN \'赛蒙渠道\' THEN \'赛蒙\' ELSE \'明月\' END AS nameStr from BI_sale_area_part a left join BI_cus_ywy b on a.market=b.market left join BI_sale_cinvcode_day c on b.ccusheadcode=c.ccusheadcode LEFT JOIN (select distinct ccusheadcode ,ccusname,ccusperson,cusAttribute from BI_customer) d ON c.ccusheadcode=d.ccusheadcode where 1=1 and a.area_name not in (\'OEM横向\',\'OEM直属\',\'OEM外贸区\',\'KA渠道\') and c.cfree1_bi not like \'%白包装%\' and c.cfree1_bi not like \'%赛蒙%\' and c.cinvname_bi not like \'%轻松控%\' and ((convert(varchar(10),day_bi,23)>=\'${YEARDELTA(stratDay,-2)}\' and convert(varchar(10),day_bi,23)<=\'${YEARDELTA(day,-2)}\' ) ) GROUP BY b.market,c.ccusheadcode,b.prop_ywy,a.area_name,d.ccusname,d.ccusperson,d.cusAttribute,a.sarea_name \")}
    2022-09-30 16:33 
  • snrtuemc snrtuemc 回复 Q4512K41FF(提问者) 看修改答案
    2022-09-30 16:40 
最佳回答
0
巴拉巴拉1234Lv6初级互助
发布于2022-9-30 16:01

mysql的话用   DATE_ADD(date字段,interval -2 YEAR )

最佳回答
0
Z4u3z1Lv6专家互助
发布于2022-9-30 16:06(编辑于 2022-9-30 16:20)

应该是这样的

image.png

--------------------

如果你真心不清楚引号,双引号怎么用

可以把SQL改成(注意两条SQL查询的字段名 数量一直)

第一条SQL ${if(a=="1",""," and 1<>1")}

union all

第二条SQL ${if(a=="1"," and 1<>1","")}

  • 3关注人数
  • 335浏览人数
  • 最后回答于:2022-11-7 14:31
    请选择关闭问题的原因
    确定 取消
    返回顶部