sql - ORACLE GROUP BY 错误

标签 sql oracle

我的 SQL 查询如下:

SELECT 
  oh.ORDER_NUMBER, oh.CREATED_TS, stat.STATE, stat.TIMESTAMP 
FROM 
 IMPL_OH_ORDER_HEADER oh,
 SNCR_ORDER_DISPOSITION stat,
 SNCR_ORDER_DISP_HEAD stathead,
 IMPL_CUST_ACCOUNT cust 
WHERE 
 stat.DISP_TRANSACTION_ID=stathead.DISP_TRANSACTION_ID
 and stathead.TRANSACTION_ID=oh.TRANSACTION_ID 
 and oh.ACCOUNT_ID=cust.ACCOUNT_ID 
 and stat.CATEGORY=100 
 and oh.USER_ID='a' 
 and cust.ACCOUNT_NUM='123'
 GROUP BY oh.ORDER_NUMBER
 ORDER BY stat.TRX_SEQ DESC;

它给出以下错误:ORA-00979: not a GROUP BY expression

如果我删除 GROUP BY 表达式,则不会收到错误。

正确的 GROUP BY 语法是什么?

研究:谷歌搜索表明,如果使用 AGGREGATE 函数,我应该在 GROUP BY 子句中包含聚合函数未使用的所有字段。所以我尝试将 GROUP BY 表达式修改为 GROUP BY oh.ORDER_NUMBER, oh.CREATED_TS, stat.TIMESTAMP, stat.STATE

但是我遇到了同样的错误。

请帮忙。

最佳答案

您收到错误是因为 order by 列表中有 STAT.TRX_SEQ

如果将group by子句与order by子句一起使用,则必须按分组的列或聚合值进行排序。

此规则也适用于选定的值:它们是分组依据或聚合函数(或伪列)的一部分。

关于sql - ORACLE GROUP BY 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22344552/

相关文章:

sql - 在 Oracle SQL 中连接

php - 根据MySQL中的条件删除所有行

mysql - 将属性名称与 MySQL 中的表名称连接起来

sql - 将数据从 C# 插入 SQL Server 2008 R2

oracle - 相同的访问方式会出现死锁吗?

sql - 如何获得与此 SQL 练习中的最大平均值相对应的值?

java - 通过 Hibernate-Criteria 和 Session.save(object) 进行 SQL 注入(inject)

php - 需要有关此 SQL 查询的帮助

oracle - 如何使用 NHibernate 以编程方式调用 Oracle 存储过程?

sql - Oracle 分析函数 - 重置窗口子句