Plsql 如何在小组中使用解码?

Plsql 如何在小组中使用解码?,plsql,Plsql,我写了如下的问题 select col1, col2, col3, col4, sum (col8) from my_table GROUP BY col1, col2, col3, col4, DECODE ( Sys_Context ('CMIC', 'P_GROUP_LEVEL3'), GROUP5, jbbd_group_code_5, GROUP4, jbbd_group_code_4,

我写了如下的问题

 select col1,
     col2,
     col3,
     col4,
     sum (col8) from my_table
     GROUP BY col1,
     col2,
     col3,
     col4,
     DECODE (  Sys_Context ('CMIC', 'P_GROUP_LEVEL3'), GROUP5,  jbbd_group_code_5,  GROUP4,  jbbd_group_code_4, GROUP3,  jbbd_group_code_3, GROUP2,  jbbd_group_code_2, GROUP1,  jbbd_group_code_1,
     jbbd_group_code_5),
     DECODE (  Sys_Context ('CMIC', 'P_GROUP_LEVEL2'), GROUP5,  jbbd_group_code_5,  GROUP4,  jbbd_group_code_4, GROUP3,  jbbd_group_code_3, GROUP2,  jbbd_group_code_2, GROUP1,  jbbd_group_code_1,
     jbbd_group_code_3),
     DECODE (  Sys_Context ('CMIC', 'P_GROUP_LEVEL1'), GROUP5,  jbbd_group_code_5,  GROUP4,  jbbd_group_code_4, GROUP3,  jbbd_group_code_3, GROUP2,  jbbd_group_code_2, GROUP1,  jbbd_group_code_1,
     jbbd_group_code_2);
此查询的主要目的是根据上下文参数值动态分配组。但它给了我如下所示的错误

ORA-00904:“组1”:无效标识符

  • 00000-%s:无效标识符 *原因:
    *行动: _第85行第175列出错

  • 此问题的原因是什么?如何解决?

    如果没有后面的表ect,我无法测试它是否存在其他问题,但在您尝试将其与对象组1 ect进行比较时,Sys\u上下文调用将返回一个字符串

    要将解码作为字符串进行比较,需要使用单引号将每个字符串括起来,如下所示

    select col1,
         col2,
         col3,
         col4,
         sum (col8) from my_table
         GROUP BY col1,
         col2,
         col3,
         col4,
         DECODE (  Sys_Context ('CMIC', 'P_GROUP_LEVEL3'), 'GROUP5',  jbbd_group_code_5,  'GROUP4',  jbbd_group_code_4, 'GROUP3',  jbbd_group_code_3, 'GROUP2',  jbbd_group_code_2, 'GROUP1',  jbbd_group_code_1,
         jbbd_group_code_5),
         DECODE (  Sys_Context ('CMIC', 'P_GROUP_LEVEL2'), 'GROUP5',  jbbd_group_code_5,  'GROUP4',  jbbd_group_code_4, 'GROUP3',  jbbd_group_code_3, 'GROUP2',  jbbd_group_code_2, 'GROUP1',  jbbd_group_code_1,
         jbbd_group_code_3),
         DECODE (  Sys_Context ('CMIC', 'P_GROUP_LEVEL1'), 'GROUP5',  jbbd_group_code_5,  'GROUP4',  jbbd_group_code_4, 'GROUP3',  jbbd_group_code_3, 'GROUP2',  jbbd_group_code_2, 'GROUP1',  jbbd_group_code_1,
         jbbd_group_code_2);
    

    我知道你发布的代码只是一个例子。不过,它看起来还可以。甲骨文说错误在第85行第175列。这是一段很大的代码。由于您没有发布它,而且考虑到调试看不到的代码很困难,我担心您将不得不自己进行调查。