今天在插入数据时,发下如下SQL 死活报错
insert into test
select psnid,
sum(f1)
from psn
inner join (select max(year) lastyear, psnid
from wagedata t
group by psnid) tmp
on psn.psnid = tmp.psnid
group by psn.psnid
错误提示是: 不是group by 表达式
但是同样的SQL 在本人本机ORACLE上可以执行
经过对比,发现本机的ORACLE版本是 11.2.0.1.0 而客户的ORACLE版本为11.2.0.4.0
最开始以为是BUG
后来发现 将SQL中的这个tmp的结果集 替换为了一张数据相同的表 ,就能够正常查询了。
至于算不算是BUG 就不好说了,不过这算是11.2.0.1.0 与11.2.0.4.0 的一点差异吧
本文探讨了在不同版本的Oracle数据库(11.2.0.1.0与11.2.0.4.0)中执行相同SQL语句时遇到的问题。主要问题是关于子查询作为表使用时,GROUP BY子句的要求有所不同。通过实验发现,将子查询替换为实际表后,查询能够正常运行。
1233

被折叠的 条评论
为什么被折叠?



