如下Sql,这个if是有什么问题吗,两个判断的sql一样只是查询条件不一样

每次不管判断条件是什么只有第一个判断的数据是正确的,后面都是错误

${if(ywType="1.71"," 

select area_name,sarea_name,market,ccusheadcode,ccusname,cusattribute,ccusperson,sum(今年值) as 今年值,sum(去年值) as 去年值,sum(前年值) as 前年值,nameStr

from (

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 今年值,0 去年值,0 前年值,

 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 c.cinvname_bi like '%1.71%'

"+if(and(or($fr_username ="21981",$fr_username ="14433"),len(propList)=0)," and cusattribute='电商客户'",if(len(propList)=0,""," and cusattribute in ('"+replace(propList,",","','")+"')"))+"

and ((convert(varchar(10),day_bi,23)>='"+stratDay+"' 

and convert(varchar(10),day_bi,23)<='"+day+"') )

 GROUP BY b.market,c.ccusheadcode,b.prop_ywy,a.area_name,d.ccusname,d.ccusperson,d.cusAttribute,a.sarea_name

union all 

select a.area_name,a.sarea_name,b.market,c.ccusheadcode,d.ccusname,d.cusAttribute,d.ccusperson,0 今年值,SUM(ISNULL(c.inatsum_bi,0)-isnull(c.thinatsum_bi,0))*b.prop_ywy AS 去年值,0 前年值,

 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 c.cinvname_bi like '%1.71%'

"+if(and(or($fr_username ="21981",$fr_username ="14433"),len(propList)=0)," and cusattribute='电商客户'",if(len(propList)=0,""," and cusattribute in ('"+replace(propList,",","','")+"')"))+"

  and ( (convert(varchar(10),day_bi,23)>='"+YEARDELTA(stratDay, -1)+"' 

  and convert(varchar(10),day_bi,23)<='"+YEARDELTA(day, -1)+"'))

 GROUP BY b.market,c.ccusheadcode,b.prop_ywy,a.area_name,d.ccusname,d.ccusperson,d.cusAttribute,a.sarea_name

 union all 

 select a.area_name,a.sarea_name,b.market,c.ccusheadcode,d.ccusname,d.cusAttribute,d.ccusperson,0 今年值,0 去年值,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 c.cinvname_bi like '%1.71%'

"+if(and(or($fr_username ="21981",$fr_username ="14433"),len(propList)=0)," and cusattribute='电商客户'",if(len(propList)=0,""," and cusattribute in ('"+replace(propList,",","','")+"')"))+"

  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)

 aa   where 1=1 

     "+if(len(saleList) == 0," and area_name in ( select distinct(sa.area_name) from BI_sale_area_part sa ,  BI_sale_userRole_new sb  where 1=1 and sb.userid='" +fr_username+ "' 

 " +if(len(userMark) == 0," and  0 ",if(userMark==0," and 1 ",if(userMark==1," and sa.area_name ",if(userMark==2," and sa.sarea_name"," and sa.market "))))+ "= " +if(len(userMark) == 0,"   1 ",if(userMark==0,"  1 "," sb.area_name "))+ " )  "," and area_name in ('" + saleList + "')")+"

   

   "+if(len(qyList) == 0," and sarea_name in (select distinct(sa.sarea_name) from BI_sale_area_part sa ,  BI_sale_userRole_new sb  where 1=1 and sb.userid='" +fr_username+ "' 

 " +if(len(userMark) == 0," and  0 ",if(userMark==0," and 1 ",if(userMark==1," and sa.area_name ",if(userMark==2," and sa.sarea_name"," and sa.market "))))+ "= " +if(len(userMark) == 0,"   1 ",if(userMark==0,"  1 "," sb.area_name "))+ ") "," and sarea_name in ('" + qyList + "')")+"

   

    "+if(len(scList) == 0," and market in (select distinct(sa.market) from BI_sale_area_part sa ,  BI_sale_userRole_new sb  where 1=1 and sb.userid='" +fr_username+ "' 

 " +if(len(userMark) == 0," and  0 ",if(userMark==0," and 1 ",if(userMark==1," and sa.area_name ",if(userMark==2," and sa.sarea_name"," and sa.market "))))+ "= " +if(len(userMark) == 0,"   1 ",if(userMark==0,"  1 "," sb.area_name "))+ ") "," and market in ('" + scList + "')")+"

 group by area_name,sarea_name,market,ccusheadcode,ccusname,cusattribute,ccusperson,nameStr

 order by area_name,sarea_name,market,ccusheadcode

",

if(ywType="防蓝光"," 

select area_name,sarea_name,market,ccusheadcode,ccusname,cusattribute,ccusperson,sum(今年值) as 今年值,sum(去年值) as 去年值,sum(前年值) as  前年值 from 

(

select  a.area_name,a.sarea_name,b.market,c.ccusheadcode,d.ccusname,d.cusAttribute,d.ccusperson,SUM(ISNULL(c.inatsum_bi,0))*b.prop_ywy AS 今年值,0 去年值,0 前年值,

 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 c.cinvname_bi like '%防蓝光%'

  "+if(and(or($fr_username ="21981",$fr_username ="14433"),len(propList)=0)," and cusattribute='电商客户'",if(len(propList)=0,""," and cusattribute in ('"+replace(propList,",","','")+"')"))+"

  and ( (convert(varchar(10),c.day_bi,23)>='"+stratDay+"' 

  and convert(varchar(10),c.day_bi,23)<='"+day+"'))

 GROUP BY b.market,c.day_bi,c.ccusheadcode,c.year_bi,b.prop_ywy,a.area_name,d.ccusname,d.ccusperson,d.cusAttribute,a.sarea_name

 union all

 select  a.area_name,a.sarea_name,b.market,c.ccusheadcode,d.ccusname,d.cusAttribute,d.ccusperson,0 今年值,SUM(ISNULL(c.inatsum_bi,0))*b.prop_ywy AS 去年值,0 前年值,

 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 c.cinvname_bi like '%防蓝光%'

   "+if(and(or($fr_username ="21981",$fr_username ="14433"),len(propList)=0)," and cusattribute='电商客户'",if(len(propList)=0,""," and cusattribute in ('"+replace(propList,",","','")+"')"))+"

  and ( (convert(varchar(10),c.day_bi,23)>='"+YEARDELTA(stratDay, -1)+"' 

  and convert(varchar(10),c.day_bi,23)<='"+YEARDELTA(day, -1)+"'))

 GROUP BY b.market,c.day_bi,c.ccusheadcode,c.year_bi,b.prop_ywy,a.area_name,d.ccusname,d.ccusperson,d.cusAttribute,a.sarea_name

 union all 

select  a.area_name,a.sarea_name,b.market,c.ccusheadcode,d.ccusname,d.cusAttribute,d.ccusperson,0 今年值,0 去年值,SUM(ISNULL(c.inatsum_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 c.cinvname_bi like '%防蓝光%'

   "+if(and(or($fr_username ="21981",$fr_username ="14433"),len(propList)=0)," and cusattribute='电商客户'",if(len(propList)=0,""," and cusattribute in ('"+replace(propList,",","','")+"')"))+"

  and ( (convert(varchar(10),c.day_bi,23)>='"+YEARDELTA(stratDay, -2)+"' 

  and convert(varchar(10),c.day_bi,23)<='"+YEARDELTA(day, -2)+"'))

 GROUP BY b.market,c.day_bi,c.ccusheadcode,c.year_bi,b.prop_ywy,a.area_name,d.ccusname,d.ccusperson,d.cusAttribute,a.sarea_name

 )aa

 where 1=1 

      "+if(len(saleList) == 0," and area_name in ( select distinct(sa.area_name) from BI_sale_area_part sa ,  BI_sale_userRole_new sb  where 1=1 and sb.userid='" +fr_username+ "' 

 " +if(len(userMark) == 0," and  0 ",if(userMark==0," and 1 ",if(userMark==1," and sa.area_name ",if(userMark==2," and sa.sarea_name"," and sa.market "))))+ "= " +if(len(userMark) == 0,"   1 ",if(userMark==0,"  1 "," sb.area_name "))+ " )  "," and area_name in ('" + saleList + "')")+"

   

   "+if(len(qyList) == 0," and sarea_name in (select distinct(sa.sarea_name) from BI_sale_area_part sa ,  BI_sale_userRole_new sb  where 1=1 and sb.userid='" +fr_username+ "' 

 " +if(len(userMark) == 0," and  0 ",if(userMark==0," and 1 ",if(userMark==1," and sa.area_name ",if(userMark==2," and sa.sarea_name"," and sa.market "))))+ "= " +if(len(userMark) == 0,"   1 ",if(userMark==0,"  1 "," sb.area_name "))+ ") "," and sarea_name in ('" + qyList + "')")+"

   

    "+if(len(scList) == 0," and market in (select distinct(sa.market) from BI_sale_area_part sa ,  BI_sale_userRole_new sb  where 1=1 and sb.userid='" +fr_username+ "' 

 " +if(len(userMark) == 0," and  0 ",if(userMark==0," and 1 ",if(userMark==1," and sa.area_name ",if(userMark==2," and sa.sarea_name"," and sa.market "))))+ "= " +if(len(userMark) == 0,"   1 ",if(userMark==0,"  1 "," sb.area_name "))+ ") "," and market in ('" + scList + "')")+"

 group by area_name,sarea_name,market,ccusheadcode,ccusname,cusattribute,ccusperson,nameStr

 order by area_name,sarea_name,market,ccusheadcode 

",

""))}

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

好长的SQL

建议改成

第一段sql if(ywType="1.71"," and 1=1"," and 1<>1")

union all

第二段SQL if(ywType="1.71"," and 1<>1"," and 1=1")

最佳回答
0
用户S5182147Lv6中级互助
发布于2022-9-28 14:14

 把测试的参数名称和对应的参数值也发一下

最佳回答
0
RiveryLv5中级互助
发布于2022-9-28 14:15(编辑于 2022-9-28 14:19)

只有第一个判断的数据是正确的,后面都是错误,这是啥意思?你填了防蓝光,输出的不是第二个执行语句吗

只有查询条件不一样的话 你可以只把查询条件放在${}里面呀,前面的查询不用判断的,因为是一样的

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