代码问题,这个条件语句里面有什么问题吗,加了这句之后总是报错,missingkeyword

WHERE (PLEVEL >= 15 OR PLEVEL = 0)

   AND SE.SID != '999'  

   AND case  when se.maid = '5' than se.eind != '8' end

 GROUP BY SE.Mid),

1620434247(1).jpg

FineReport 2964839033 发布于 2021-5-8 08:38 (编辑于 2021-5-8 08:41)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
0
axingLv6专家互助
发布于2021-5-8 09:15

 AND case  when se.maid = '5' than se.eind != '8' end

感觉这句想表达的意思是当se.maid = '5' 时,se.eind != '8'

那么可以改成  and (se.maid<>'5' or se.eind='8')

  • 2964839033 2964839033(提问者) 意思是这个意思,但是算出来数据不对
    2021-05-08 09:51 
  • axing axing 回复 2964839033(提问者) 多了哪些数据或是少了哪些数据,举个例子
    2021-05-08 09:53 
  • 2964839033 2964839033(提问者) 回复 axing 可以解释一下这句是什么意思吗,我没见过,感觉有点厉害
    2021-05-08 10:09 
  • axing axing 回复 2964839033(提问者) 就是或关系,满足se.maid不等于5或者满足se.eind等于8的都筛选出来
    2021-05-08 10:13 
  • 2964839033 2964839033(提问者) 回复 axing 我需要的是且的关系 满足 se.maid=5 且 se.eind!=8 能不能改成 and (se.maid=\'5\' and se.eind<>\'8\')
    2021-05-08 10:17 
最佳回答
0
Kevin-sLv7中级互助
发布于2021-5-8 08:39(编辑于 2021-5-8 08:39)

case  when se.maid = '5' than se.eind != '8' end 中的than改成then试试看下

  • 2964839033 2964839033(提问者) 没得用
    2021-05-08 08:41 
  • Kevin-s Kevin-s 回复 2964839033(提问者) CASE WHEN不能放在WHERE下面
    2021-05-08 08:43 
  • Kevin-s Kevin-s 回复 2964839033(提问者) 放在SELECT 后面,如果要过滤再加一层嵌套过滤下
    2021-05-08 08:45 
  • Kevin-s Kevin-s 回复 2964839033(提问者) 不能放在where里边,像你这样的,用子查询去查会比较容易select * from where 字段 in(select case when 字段>1 then 1 else 0 end from 表)
    2021-05-08 08:46 
最佳回答
0
shirokoLv6资深互助
发布于2021-5-8 08:49

WHERE (PLEVEL >= 15 OR PLEVEL = 0)

   AND SE.SID != '999'  

   AND (case  when se.maid = '5' then se.eind else '8' end) != '8'

 GROUP BY SE.Mid),

   

最佳回答
0
圣体叶小凡Lv6高级互助
发布于2021-5-8 09:09

group by se.mid后面 为什么要 加 ), 

最佳回答
0
李先生你好Lv2见习互助
发布于2021-5-8 10:09(编辑于 2021-5-8 10:34)

①可以用帆软公式解决:AND case  when se.maid = '5' than se.eind != '8' end这行改成用 ${if(,,)}公式代替。

②如果说这不是放到帆软数据集用的,那这个用法是有矛盾的,你可以用恒成立1=1替代还是报一样的错误;

③不用case when 用逻辑把这个条件写出来,可以执行试下

WHERE (PLEVEL >= 15 OR PLEVEL = 0)

   AND SE.SID != '999'  

   AND ( (se.maid <> '5'or (se.maid = '5' and se.eind = '8'))

 GROUP BY SE.Mid)

  • 2964839033 2964839033(提问者) 这个运行出来的结果和没加这个条件运行的结果一样
    2021-05-08 10:15 
  • 李先生你好 李先生你好 回复 2964839033(提问者) 这样应该就对了 WHERE (PLEVEL >= 15 OR PLEVEL = 0) AND SE.SID != \'999\' AND ((se.maid <> \'5\') or (se.maid = \'5\' and se.eind = \'8\')) GROUP BY SE.Mid)
    2021-05-08 10:33 
  • 2964839033 2964839033(提问者) 回复 李先生你好 很强,谢谢
    2021-05-08 11:01 
  • 6关注人数
  • 602浏览人数
  • 最后回答于:2021-5-8 10:34
    请选择关闭问题的原因
    确定 取消
    返回顶部