命名表的SQL where子句
当我没有年龄字段进行检查时,如何使用where子句检查下面显示的年龄?我正在使用oracledb命名表的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'))
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。此外,从另一个字符串中减去一个字符串似乎是一个坏习惯。