第一次海报/ Oracle newb。
我试图在where子句中显示最小和最大年龄,到目前为止我可以显示最小值或最大值,但是当我尝试显示它们时它都返回
ora-00913:太多的值"
这是我的min / max代码(工作正常);
SELECT ROUND
((SYSDATE - TO_DATE (DOB)) /365, 0) "AGE"
FROM EMPLOYEE
WHERE
DOB = (SELECT MIN (DOB) FROM EMPLOYEE);
当我把它们放在一起时 -
SELECT ROUND
((SYSDATE - TO_DATE (DOB)) /365, 0) "AGE"
FROM EMPLOYEE
WHERE
DOB = (SELECT MIN (DOB), MAX (DOB) FROM EMPLOYEE);
我遇到问题的地方,我尝试使用AND将它们分开,它根本没有帮助。不知道我能做什么,感谢任何帮助。
答案 0 :(得分:0)
Min(DOB)
是单个值,因此您可以在=
子句中使用where
。但是(SELECT MIN (DOB), MAX (DOB) FROM EMPLOYEE)
会返回多个值,因此您必须使用IN
:
SELECT ROUND
((SYSDATE - TO_DATE (DOB)) /365, 0) "AGE"
FROM EMPLOYEE
WHERE
DOB IN (SELECT MIN (DOB), MAX (DOB) FROM EMPLOYEE);
答案 1 :(得分:0)
如果我理解正确,并且您尝试获取EMPLOYEES
值为数据库中最小值和最大值的所有DOB
条记录,则可以{{1}数据,然后使用SELECT
加载数据。
OR
答案 2 :(得分:0)
在我的情况下,以下是“ ORA-00913:值太多”错误:
从r中选择f,l 其中n = 1 和l in(从r中选择max(l),min(l));
但是以下操作成功完成:
从r中选择f,l 其中n = 1 和(l =(从r中选择max(l))或l =(从r中选择min(l)));
谢谢