ORACLE SQL中的MAX()
我有一个表,用于存储已完成的维护任务的记录列表以及完成它们的日期和时间.我正在尝试执行子查询以提取具有最新日期的每个任务的记录.我的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”时,我得到: 1 – 究竟是什么意思 解决方法您在SELECT子句中添加的没有聚合函数的列应该在GROUP BY子句中.为了使它有点清楚: 您的SELECT子句中有TransactionID,AccountID,TransactionAmount,TransactionDate,并且在所有日期都需要SUM(TransactionAmount),在这种情况下,如果添加 SELECT TransactionDate,TransactionID,SUM(TransactionAmount) FROM Table GROUP BY TransactionDate 然后你会得到一个错误,为什么呢 TransDate TransAmt 20140101 4000 在这种情况下,如果您在SELECT子句中引入其他属性,如AccountID和TransactionID,它们将在哪里?这就是为什么我们必须在SELECT子句中包含GROUP子句中的所有属性,除了具有AGGREGATE函数的属性. (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |