Sql 当用户是多个组的成员时,如何根据用户组过滤APEX网格中的数据?

Sql 当用户是多个组的成员时,如何根据用户组过滤APEX网格中的数据?,sql,oracle-apex,Sql,Oracle Apex,我正试图根据分配给一个或多个用户组的任务筛选APEX报告中的数据。用户组名称用作报表中的变量,允许筛选每一行 例如,使用以下数据: ID ---------- NAME --------- Group 0001 John ADMR 0002 John APRC 0024 Bob ADMR 0011 Bob APRC 0045

我正试图根据分配给一个或多个用户组的任务筛选APEX报告中的数据。用户组名称用作报表中的变量,允许筛选每一行

例如,使用以下数据:

ID ---------- NAME --------- Group
0001          John           ADMR
0002          John           APRC
0024          Bob            ADMR
0011          Bob            APRC
0045          John           ADMR
  • 分配给ADMR组的用户应该只看到组中包含的行== ADMR
  • 分配给APRC组的用户应仅查看组所在的行== 澳大利亚审慎监管委员会
  • 分配给ADMR组和APRC组的用户只能看到行 其中group==ADMR或group==APRC
  • 将有许多组/组合(不仅仅是ADMR和APRC),因此我想要一个通用解决方案

    我已将其设置为适用于根据分配给单个组的用户:。但是,我一直无法解决如何使它适用于多个用户组

    此where子句适用于单个组(从页面设计器运行):

    但如果将用户分配给两个组,则只显示ADMR数据

    我认为,当用户同时被分配到ADMR和APRC组时,非通用解决方案可能如下所示:

    (
    ','||apex_util.get_groups_user_belongs_to(:app_user)||',' like '%,ADMR,%'
          and
    ','||apex_util.get_groups_user_belongs_to(:app_user)||',' like '%,APRC,%' 
          and 
     (group = 'ADMR' or group = 'APRC')
    )      
    
    但执行此操作时,不会显示任何数据

    在我看来,一般解决方案将在以下情况下使用:

    group in (','||apex_util.get_groups_user_belongs_to(:app_user)||','))
    
    但执行此操作时,不会显示任何数据

    要工作,它应该与

    group in ('ADMR','APRC')
    

    没有错误消息。

    感谢@romeuBraga提供的框架。下面的操作有效(我必须添加修剪功能)

    也许这会有帮助,或者
    group in ('ADMR','APRC')
    
      where GROUP in (
        SELECT trim(regexp_substr(','||apex_util.get_groups_user_belongs_to(:APP_USER)||',', '[^,]+', 1, LEVEL)) 
    FROM dual
        connect by regexp_substr(
    ('ADMR, APRC')
    , '[^,]+', 1, level) 
    is not null 
    );