我们可以在 HQL 中将 to_char( ) 与 GROUP BY 一起使用吗
Can we use to_char( ) with GROUP BY in HQL
使用 Hibernate 执行以下查询时
select to_char(vdadCloseDate,'yyyymm'), count(*) from RmDashboardAccountDataBe where 1=1 and vdadRmId in('MK13','MK11') GROUP BY TO_CHAR(vdadCloseDate,'YYYYMM')
我遇到以下异常,
java.sql.SQLSyntaxErrorException: ORA-00979: not a GROUP BY expression
有什么办法可以解决这个问题吗?
这是 "pure" Oracle SQL(即不是 HQL),它看起来与您的查询完全一样(不过我不得不使用不同的 table 和列名):
SQL> select to_char(hire_date, 'yyyymm'), count(*)
2 from employees
3 where department_id in (10, 20)
4 group by to_char(hire_date, 'yyyymm');
TO_CHA COUNT(*)
------ ----------
200309 1
200508 1
200402 1
SQL>
所以 - 是的,它工作正常。
这是 link 到 HQL Group by clause 这也表明这样的查询是完全有效的(看看我就不必 copy/paste 它的内容在这里).
这就是为什么我问你是否确定这是返回 ORA-00979 错误的查询。你这么一说,呵呵,我都不知道说什么了...
使用 Hibernate 执行以下查询时
select to_char(vdadCloseDate,'yyyymm'), count(*) from RmDashboardAccountDataBe where 1=1 and vdadRmId in('MK13','MK11') GROUP BY TO_CHAR(vdadCloseDate,'YYYYMM')
我遇到以下异常,
java.sql.SQLSyntaxErrorException: ORA-00979: not a GROUP BY expression
有什么办法可以解决这个问题吗?
这是 "pure" Oracle SQL(即不是 HQL),它看起来与您的查询完全一样(不过我不得不使用不同的 table 和列名):
SQL> select to_char(hire_date, 'yyyymm'), count(*)
2 from employees
3 where department_id in (10, 20)
4 group by to_char(hire_date, 'yyyymm');
TO_CHA COUNT(*)
------ ----------
200309 1
200508 1
200402 1
SQL>
所以 - 是的,它工作正常。
这是 link 到 HQL Group by clause 这也表明这样的查询是完全有效的(看看我就不必 copy/paste 它的内容在这里).
这就是为什么我问你是否确定这是返回 ORA-00979 错误的查询。你这么一说,呵呵,我都不知道说什么了...