加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ORACLE SQL中的MAX()

发布时间:2021-03-14 20:32:51 所属栏目:百科 来源:网络整理
导读:我有一个表,用于存储已完成的维护任务的记录列表以及完成它们的日期和时间.我正在尝试执行子查询以提取具有最新日期的每个任务的记录.我的SQL语句是: SELECT "ENGINEERING_COMPLIANCE"."EO" AS "EO","ENGINEERING_COMPLIANCE"."AC" AS "AC","ENGINEERING_

我有一个表,用于存储已完成的维护任务的记录列表以及完成它们的日期和时间.我正在尝试执行子查询以提取具有最新日期的每个任务的记录.我的SQL语句是:

SELECT "ENGINEERING_COMPLIANCE"."EO" AS "EO","ENGINEERING_COMPLIANCE"."AC" AS "AC","ENGINEERING_COMPLIANCE"."PN" AS "PN","ENGINEERING_COMPLIANCE"."PN_SN" AS "PN_SN","ENGINEERING_COMPLIANCE"."HOURS_RESET" AS "HOURS_RESET","ENGINEERING_COMPLIANCE"."MINUTES_RESET" AS "MINUTES_RESET","ENGINEERING_COMPLIANCE"."CYCLES_RESET" AS "CYCLES_RESET","ENGINEERING_COMPLIANCE"."RESET_DATE" AS "RESET_DATE","ENGINEERING_COMPLIANCE"."RESET_HOUR" AS "RESET_HOUR","ENGINEERING_COMPLIANCE"."RESET_MINUTE" AS "RESET_MINUTE",MAX ( "ENGINEERING_COMPLIANCE"."RESET_DATE" ) AS "LAST_COMP_DATE"
  FROM ENGINEERING_COMPLIANCE
GROUP BY ( "ENGINEERING_COMPLIANCE"."EO" ),( "ENGINEERING_COMPLIANCE"."AC" ),( "ENGINEERING_COMPLIANCE"."PN" ),( "ENGINEERING_COMPLIANCE"."PN_SN" )

但是我一直收到以下错误:“ORA-00979:不是GROUP BY表达式”

当我删除“GROUP BY”时,我得到:
“ORA-00937:不是单组组功能”

1 – 究竟是什么意思
2 – 声明有什么问题?

解决方法

您在SELECT子句中添加的没有聚合函数的列应该在GROUP BY子句中.

为了使它有点清楚:
拿这个例子:

您的SELECT子句中有TransactionID,AccountID,TransactionAmount,TransactionDate,并且在所有日期都需要SUM(TransactionAmount),在这种情况下,如果添加

SELECT TransactionDate,TransactionID,SUM(TransactionAmount) 
FROM Table 
GROUP BY TransactionDate

然后你会得到一个错误,为什么呢
假设您在20160101上有4笔交易,每笔交易额为1000美元
你的结果期望是

TransDate      TransAmt
 20140101          4000

在这种情况下,如果您在SELECT子句中引入其他属性,如AccountID和TransactionID,它们将在哪里?这就是为什么我们必须在SELECT子句中包含GROUP子句中的所有属性,除了具有AGGREGATE函数的属性.

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!