我尝试了以下查询(使用标准目录视图-请注意,一个子查询使用dblink):
SELECT (MAX(sequence#)-(SELECT MAX(sequence#) a FROM v$log_history@standby
WHERE first_time > SYSDATE - 1)) FROM v$log_history where first_time > SYSDATE - 1
这应该产生一个整数。但是我得到了以下错误:即使子查询是标量的,“ ORA-00937:不是单组组函数”,然后外部查询也应该是标量的(在所有行中选择最大值)。我的查询出了什么问题,该如何解决?
答案 0 :(得分:0)
我想我知道发生了什么事。 Oracle无法看到标量子查询是常量,因此会抱怨它不是按列或表达式分组。
尝试这样:
SELECT MAX(sequence#-(SELECT MAX(sequence#)
FROM v$log_history@standby
WHERE first_time > SYSDATE - 1))
FROM v$log_history
where first_time > SYSDATE - 1;
答案 1 :(得分:0)
What you are lacking is an aggregate function on the expression
---> SELECT MAX(sequence#)
FROM v$log_history@standby
WHERE first_time > SYSDATE - 1
我会尝试通过在表/视图上设置别名来作为准确引用查询的更好方法。
SELECT MAX(db.sequence#)-MAX (
(SELECT MAX(other_db.sequence#)
FROM v$log_history@standby other_db
WHERE other_db.first_time > SYSDATE - 1
)
)
FROM v$log_history db
WHERE db.first_time > SYSDATE - 1