奇怪同样的 SQL 语句在 11.2.0.3 下无法执行,在 11.1.0.6 却可以,有没高手可以看下

2015-12-17 11:13:29 +08:00
 ge2009

SQL 语句:
SELECT patient_id,
patient_name,
other_patient_id,
other_patient_name,
english_patient_name,
patient_id_issuer,
patient_sex,
patient_birth_date,
patient_birth_time,
count(*) as study_count,
sum(series_count) as series_count,
sum(instance_count) as instance_count,
NULL
FROM sv_study_patient_id s
WHERE merge_key IS NULL
AND hide_code IS NULL
AND instance_count > 0
AND rownum < 1000
GROUP BY patient_id,
patient_id_issuer,
patient_name,
other_patient_id,
other_patient_name,
english_patient_name,
patient_sex,
patient_birth_dttm,
merge_key,
hide_code

在 11.2.0.3 下报 ORA-00979 错误,
http://ww3.sinaimg.cn/large/42ae781fgw1ez2hfuc8c0j21kw0wmqk4.jpg

可在 11.1.0.6 下却可以执行成功
http://ww3.sinaimg.cn/large/42ae781fgw1ez2he6ruu2j20wz0kitfv.jpg

请解

2133 次点击
所在节点    Oracle
3 条回复
mringg
2015-12-17 11:33:39 +08:00
语句貌似就有问题, select 非聚集的列必须用 group by 分组
mringg
2015-12-17 11:34:34 +08:00
还有个不是问题的问题,能不能 select 和 group by 后面的列顺序保持一直
ge2009
2015-12-17 12:07:45 +08:00
@mringg 就像你说的我把 patient_birth_date,patient_birth_time 这两列去掉,或者在 Group by 里面加上,好像都可以执行,可能 Oracle 11G 后对 SQL 的解析上是这样了,谢谢!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/244149

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX