在where子句中显示min,max =值太多?

时间:2016-04-17 04:02:35

标签: sql oracle

第一次海报/ 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将它们分开,它根本没有帮助。不知道我能做什么,感谢任何帮助。

3 个答案:

答案 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)));

谢谢