【发布时间】:2021-11-05 12:58:04
【问题描述】:
我的 RUBY 代码以下列方式执行 oracle 查询,但我似乎得到了错误:
Java::JavaSql::SQLSyntaxErrorException: ORA-00979: 不是 GROUP BY 表达式
SELECT
"REQUESTS".*
FROM
"REQUESTS"
WHERE
(
customer_id = 1
AND request_method != 'OPTIONS'
AND request_time BETWEEN TO_TIMESTAMP('2021-10-29 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
AND TO_TIMESTAMP(
'2021-11-05 23:59:59.000999',
'YYYY-MM-DD HH24:MI:SS.FF'
)
)
GROUP BY
"REQUESTS"."REQUEST_TIME"
最初翻译成上述选择查询的代码是:
requests = Request.where("customer_id = ? AND request_method != ? AND request_time BETWEEN TO_TIMESTAMP(?,'YYYY-MM-DD HH24:MI:SS') AND TO_TIMESTAMP(?,'YYYY-MM-DD HH24:MI:SS.FF')", customer.id, 'OPTIONS', start_time, end_time).group('date(request_time'))
.group('date(request_time') is translated in oracle to: GROUP BY date(request_time)
但是原来的查询似乎也不起作用,原因是Oracle没有这个功能,所以我改变了它,并一直在尝试不同的方式,但似乎无法弄清楚为什么按表达式分组不起作用。
【问题讨论】:
-
因为您按单个列分组,但请求所有列。请检查the documentation。而且完全不清楚您为什么将 SQLite 与 Oracle 一起标记,因为它们完全不同
标签: oracle