where后的条件判断

当A字段 = 某值 时,排除B字段里的一个值

当一级科目是‘’销售费用‘’时,排除三级科目里的‘’装修费‘’

where 1=1

${if(a.subjname1="销售费用"," and a.subjname3!='装修费'","")}

我写的SQL没生效

会沉寂嗎 发布于 2021-3-11 13:34
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
axingLv6专家互助
发布于2021-3-11 14:18
where 1=1 and (a.subjname1="销售费用" and a.subjname3!='装修费' or a.subjname1!="销售费用")

最佳回答
0
烟尘Lv6高级互助
发布于2021-3-11 13:35(编辑于 2021-3-11 13:43)

这个要看你的查询条件控件是怎么设置的

如果控件值是判断A字段值的话

where 1=1

${if(len(控件参数名)==0,"",if(控件参数名=="销售费用"," and a.subjname1='销售费用' and a.subjname3<>'装修费'"," and a.subjname1='"+控件参数名+"'"))}

当控件值是销售费用会屏蔽装修费,当控件值是其他的就正常查询

  • 会沉寂嗎 会沉寂嗎(提问者) 好的感谢! 我想的需求是 :不写控件值的时候, 查询全部的时候也可筛掉\'销售费用\'里的\'装修费\'
    2021-03-11 13:51 
  • 烟尘 烟尘 回复 会沉寂嗎(提问者) 两个方法:1.做科目对照表,按选择的控件值查出三级科目列表然后统计;2.写视图,用销售费用不带装修费查询的结果union all 除销售费用以外的所有结果作为基础表视图来查询
    2021-03-11 13:56 
  • 烟尘 烟尘 回复 会沉寂嗎(提问者) 要想原本在一级科目下的三级科目不参与科目汇总就只能把三级科目单抓出来,就是要在select的子表里就设置好,where层面是不能改变原表数据结构的。
    2021-03-11 14:00 
  • 烟尘 烟尘 回复 会沉寂嗎(提问者) 之前遇到过管理需求有把三级科目单独核算的,我们的处理方式就是做科目编号分类对照表,哪些核算项对应哪些科目标清楚,查询的时候就相当于 where 科目 in (科目编号)
    2021-03-11 14:03 
最佳回答
0
祈LLv6中级互助
发布于2021-3-11 13:53

明白你的意思,但是为什么要在where里这样写,有什么意义吗,一般这种判断是直接select判断的

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