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”:无效标识符
*行动: _第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列。这是一段很大的代码。由于您没有发布它,而且考虑到调试看不到的代码很困难,我担心您将不得不自己进行调查。