命名表的SQL where子句

命名表的SQL where子句,sql,oracle11g,Sql,Oracle11g,当我没有年龄字段进行检查时,如何使用where子句检查下面显示的年龄?我正在使用oracledb select LNAME || ', ' || FNAME as "Name", TO_CHAR(sysdate,'YYYY') - TO_CHAR(DOB,'YYYY') as AGE from STAFF where AGE = (select min(TO_CHAR(sysdate,'YYYY') - TO_CHAR(DOB,'YYYY'))

当我没有年龄字段进行检查时,如何使用where子句检查下面显示的年龄?我正在使用oracledb

select LNAME || ', ' || FNAME as "Name", 
       TO_CHAR(sysdate,'YYYY') - TO_CHAR(DOB,'YYYY') as AGE 
  from STAFF
 where AGE = (select min(TO_CHAR(sysdate,'YYYY') - TO_CHAR(DOB,'YYYY')) 
                from STAFF);

要选择最年轻的工作人员:

select  *
from    (
        select  *
        from    STAFF
        order by
                DOB desc
        ) SubQueryAlias
where   rownum = 1

以下是一些关于现有Oracle表的示例:

SELECT * FROM 
(
 SELECT ename as "Name"
      , TO_CHAR(sysdate,'YYYY') - TO_CHAR(hiredate,'YYYY') as AGE 
  FROM scott.emp
)
WHERE age = (SELECT min(TO_CHAR(sysdate,'YYYY') - TO_CHAR(hiredate,'YYYY')) FROM scott.emp)
/

Name    AGE
----------------
SCOTT   26
ADAMS   26

您还可以将分析函数添加到“按年龄划分”或任何其他字段中,例如,或简单地按年龄排序asc,以查看输出中的所有EMP,其中

我不太明白。我知道你在做什么,但我该如何使用它?你的查询看起来像是在寻找最年轻的员工。此查询将返回该值。如果你在寻找其他的东西,考虑更多的细节来编辑你的问题。谢谢你保留我的原始代码。年龄通常不是当前年份减去出生年份。您可能希望sysdate和出生日期之间的月数除以12。此外,从另一个字符串中减去一个字符串似乎是一个坏习惯。