0

当我没有年龄字段来检查它时,如何使用 where 子句检查下面的年龄显示?我正在使用 oracle 数据库。

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);
4

2 回答 2

1

要选择最年轻的员工:

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

SQL Fiddle 的示例。

于 2013-02-05T18:08:48.920 回答
0

以下是现有 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 删除 where...

于 2013-02-05T18:26:07.610 回答