sql判断

and depart_no = (

${if(loginuser)='admin','C00001',"select b.c_id from (

select a.* from tm_tree a

where a.c_type = '自主经营体' and '"+departs_amb+"' like a.c_id  order by a.dn_id

) b where rownum < 2"}

image.png

请问一下这个depart_no 需要判断,当登陆人(loginuser)是admin时,这个depart_no 就是C00001,如果不是就执行

select b.c_id from (

select a.* from tm_tree a

where a.c_type = '自主经营体' and 'C00001' like a.c_id  order by a.dn_id

)b where rownum < 2

这一条sql语句。但是我在帆软了

试了好几下都不行.请大神帮助一下

FineReport 吴浩 发布于 2018-11-28 15:48
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
touyuan001Lv6中级互助
发布于2018-11-28 16:24(编辑于 2018-11-28 16:29)

 'C00001' like a.c_id  这是几个意思没看懂。

除去这段的话你上面的语句 基本可以改成下面的写法

and depart_no  in (

${if(loginuser=="admin","'C00001'","

select b.c_id from (

select a.* from tm_tree a

where a.c_type = '自主经营体'  order by a.dn_id

)b where rownum < 2

")}

)

  • 吴浩 吴浩(提问者) ${if(loginuser=\"admin\",\'C00001\',\"select b.c_id from ( select a.* from tm_tree a where a.c_type = \'自主经营体\' and \'\"+departs_amb+\"\' like a.c_id order by a.dn_id ) b where rownum < 2\")} 我改了,但是这个‘C00001’显示标识符无效
    2018-11-28 16:39 
  • touyuan001 touyuan001 回复 吴浩(提问者) 是我上面给的语句报错还是你自己 加上后面的 and \'C00001\' like a.c_id 报错
    2018-11-28 17:10 
  • 吴浩 吴浩(提问者) 回复 touyuan001 你写的没错我写错了
    2018-11-28 17:12 
  • touyuan001 touyuan001 回复 吴浩(提问者) 哦哦,好的。
    2018-11-28 17:15 
最佳回答
0
李节Lv4见习互助
发布于2018-11-28 16:10

把admin和C00001的单引号改成双引号,在整个$预定义函数上加上单引号

  • 吴浩 吴浩(提问者) 你是在整个判断外面加一层单引号是吗。我试了不行的
    2018-11-28 16:18 
  • 李节 李节 回复 吴浩(提问者) sql没有这种语法,depart_no=select ...
    2018-11-28 16:36 
  • 吴浩 吴浩(提问者) 回复 李节 有的,结果只有一个值得时候就可以,多个值的时候一般用in
    2018-11-28 16:42 
  • 3关注人数
  • 595浏览人数
  • 最后回答于:2018-11-28 16:29
    请选择关闭问题的原因
    确定 取消
    返回顶部