特例sql怎么去判断

4.png

怎么在服务器数据里加个判断,当登录用户属于吉林榆银村镇银行管理部 的时候   显示出图片中的所有 机构     这个机构树的表可以增加一个自定义的字段,不影响其他的机构显示,现在 吉林榆银村镇银行管理部  的用户登录的时候 只显示 红圈1部分  不显示 2部分,目的显示出  1+2的部分

FineReport 15764373317 发布于 2021-3-22 19:30 (编辑于 2021-3-22 19:37)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
zsh331Lv8专家互助
发布于2021-3-23 21:27
SELECT *   FROM bigdata.GLR_B_ORG_INFO  where 1=1    ${if(sql("数据连接名","SELECT flag FROM  bigdata.GLR_B_ORG_INFO  WHERE 条件字段 ='"+a+"'",1,1)=1," and (org_cd=(select org_cd from bigdata.GLR_B_ORG_INFO where  org_id= '"+a+"') or parent_org_cd =(select  org_cd  from   bigdata.GLR_B_ORG_INFO where org_id='"+a+"'))"," and flag = 1")}

最佳回答
0
luojian0323Lv7资深互助
发布于2021-3-22 19:35(编辑于 2021-3-23 08:44)

你要截图看下你的org_id跟你的登录用户有什么关系 

如果你的报表平台对用户设置的部门。可以通过添加参数,参数给个公式:getuserdepartments()来获取部门信息,然后在sql的where 1=1后面加上if判断该参数是不是你要的吉林榆银村镇银行管理部

我猜你是要显示这个

image.png

image.png

并不是你截图中的所有内容

  • 15764373317 15764373317(提问者) org_id 跟登录的用户是 1对1 的 这个没问题 就是想这个判断怎么去写 我刚完善了问题 想怎么1和2都显示,这个判断怎么去写
    2021-03-22 19:39 
  • luojian0323 luojian0323 回复 15764373317(提问者) sql贴上来。截图看不明白
    2021-03-22 19:58 
  • 15764373317 15764373317(提问者) 回复 luojian0323 select * from bingdata.glr_b_org_info where org_cd =(select org_cd from bingdata.glr_b_org_info where org_id=\'${a}\' ) or parent_org_cd =(select org_cd from bingdata.glr_b_org_info where org_id=\'${a}\' ) 这个sql ${a] 给的公式是 INDEXOFARRAY(split(GETUSERDEPARTMENTS(),\",\"),len(split(GETUSERDEPARTMENTS(),\",\"))) 这个是获取登陆用户的机构 获取的这个值 返回到这个sql 里 来查询机构树 想一个判断 吉林榆银村镇银行管理部 这个
    2021-03-22 20:42 
  • luojian0323 luojian0323 回复 15764373317(提问者) 如果没有显示a参数对应的内容,那你检查一下a参数里的公式结果是什么,结果对不对? 在单元格写上该公式,预览一下。
    2021-03-23 08:46 
  • 15764373317 15764373317(提问者) 回复 luojian0323 SELECT * FROM bigdata.GLR_B_ORG_INFO where (org_cd=(select org_cd from bigdata.GLR_B_ORG_INFO where org_id= \'${a}\') or parent_org_cd =(select org_cd from bigdata.GLR_B_ORG_INFO where org_id=\'${a}\')) //WHERE 后面加个判断 当a=1的时候正常执行 上面的where 后面条件 当a=2的时候 让 org_cd=\'101021011\' OR parent_org_cd=\'101000001\'
    2021-03-23 13:20 
最佳回答
0
Z4u3z1Lv6专家互助
发布于2021-3-23 09:21

看你 查询出来的结果:bigdata.glr_b_org_info中的org_cd为组织编号,parent_org_cd为上级组织编号,则试试下面这个语句

with my1 as(select org_cd from bigdata.glr_b_org_info where ORG_ID = '101000000'

 union all select bigdata.glr_b_org_info.org_cd from my1, bigdata.glr_b_org_info where my1.org_cd = bigdata.glr_b_org_info.parent_org_cd

 )

 SELECT * FROM bigdata.glr_b_org_info WHERE EXISTS (SELECT * FROM my1 WHERE my1.org_cd=bigdata.glr_b_org_info.org_cd)

  • 15764373317 15764373317(提问者) SELECT * FROM bigdata.GLR_B_ORG_INFO where (org_cd=(select org_cd from bigdata.GLR_B_ORG_INFO where org_id= \'${a}\') or parent_org_cd =(select org_cd from bigdata.GLR_B_ORG_INFO where org_id=\'${a}\')) //WHERE 后面加个判断 当a=1的时候正常执行 上面的where 后面条件 当a=2的时候 让 org_cd=\'101021011\' OR parent_org_cd=\'101000001\'
    2021-03-23 13:19 
  • 3关注人数
  • 400浏览人数
  • 最后回答于:2021-3-23 21:27
    请选择关闭问题的原因
    确定 取消
    返回顶部