为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】: V8
【CPU】: x64
【问题描述】*:
对SQL添加 /+ GROUP_OPT_FLAG(1)/ 后,SQL执行正常;
但是根据该SQL创建为视图后提示“不是 group by 表达式”;
示例:
1、原始SQL:(执行结果:不是 group by 表达式)
SELECT "ID", "STATUS" FROM md_access GROUP BY "ID";
2、修复后的SQL:(执行结果:正常)
SELECT /*+ GROUP_OPT_FLAG(1)*/ "ID", "STATUS" FROM md_access GROUP BY "ID";
3、创建视图SQL:(创建视图成功,查询视图结果:不是 group by 表达式)
CREATE VIEW "u_db"."u_view_access" ("ID", "STATUS")
AS
SELECT /*+ GROUP_OPT_FLAG(1)*/ "ID", "STATUS" FROM md_access GROUP BY "ID";
select /+ group_opt_flag(1)/* from vw_test;
视图内部那个hint失效了。需要在最外层视图上再加上
或者可以对没有在group by的列进行添加 MIN() 或 MAX()函数处理,示例:
SELECT "ID", MAX("STATUS") FROM md_access GROUP BY "ID";
你好,本地测试未出现您这种情况,方便把您的表结构,报错截图,数据库版本发下么?
查询数据库版本
select * from v$v$instance;
select id_code();
select * from v$version;