oracle - 实现 GROUP BY oracle 查询导致:不是 Ruby 中的 GROUP BY 表达式
问题描述
我的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 没有这个功能,所以我改变了它并一直在尝试不同的方式,但似乎无法弄清楚为什么该组通过表达不会起作用。
解决方案
select *
表示“选择所有列”。
Group by 子句说group by request_time
,它只有一列,那是行不通的。
您必须应用group by
到所有列(一一指定),或者 - 更简单 - 使用select distinct
.
基本上,我们在列列表中group by
有聚合时使用。select
如果没有,你不会group by
。
你真正要做的取决于你想做什么,即你期望的结果。
推荐阅读
- python - 如何生成 Django 一次性下载链接
- javascript - 如何在jQuery中访问父母的孩子
- javascript - 如果我将“NA”或“---”添加为空日期值,则 jQuery 数据表时刻日期格式排序插件不起作用
- python - 检索已应用于 holoviews 对象的选项
- javascript - 模态显示事件上的模糊内容
- python - 如何在 Keras/Tensorflow 中模拟 Caffe 的最大池化行为?
- c - 当我在 C 中 malloc 另一个字符串时,字符串发生了变化
- c# - 为什么仅在调试测试时,单元测试中的 Form.CanFocus 为 false?
- xml - 如何在 QnA Maker 中使用 XML 文件的内容?
- python - 熊猫:重命名 Series.name