我有如下问题:
SELECT
sum(field1) as t1.sum_f1,
(select count(*) from table2) as count_t2,
t1.f2
FROM
t1
GROUP BY
t1.f2
此查询由javax.persistence.entitymanager java istance执行。
entitymanager在oracle数据库中运行查询。
我已经编写了mockito测试,在内存数据库中配置了h2。
问题如下:
当mockito测试(使用h2作为db)执行相同的查询时,它可以正常工作。
当我运行java应用程序(使用oracledb作为db)时,它会给出错误:ora-00979。
我认为它希望count\u t2在groupby字段列表中,但这是不允许的,因为内部查询是在sql中的groop by之后处理的(因此count\u t2在“groupby-time”处不可见)。
我该怎么解决?
谢谢。
2条答案
按热度按时间wtlkbnrh1#
将计算移到
FROM
条款:带有聚合查询的子查询对于查询解析器来说可能很棘手。
pu3pd22g2#
我终于找到了让它发挥作用的方法。
这样,投影字段就是“sum,count”和聚合字段。这个查询在h2和oracledb中都可以正常工作。