Oracle-最长年份查询错误

Oracle-最长年份查询错误,oracle,plsql,Oracle,Plsql,我想查看最短日期的最长年份(“22.02.2012 12:02:08”) 如何进行此操作?使用选择最大(dt)而不是选择* 编辑:重新阅读问题并比较所需输出后,您可以 可能需要最大年份内日期的最小日期 在这种情况下,该声明将被删除 select * from ( select add_months(sysdate,-2)dt from dual union sele

我想查看最短日期的最长年份(“
22.02.2012 12:02:08
”)
如何进行此操作?

使用
选择最大(dt)
而不是
选择*

编辑:重新阅读问题并比较所需输出后,您可以 可能需要最大年份内日期的最小日期

在这种情况下,该声明将被删除

select * from 
             (    
                select add_months(sysdate,-2)dt from dual
                union
                select add_months(sysdate,-1) from dual
                union
                select add_months(sysdate,2)from dual
                union
                select add_months(sysdate,3) from dual
             )
使用
select max(dt)
代替
select*

编辑:重新阅读问题并比较所需输出后,您可以 可能需要最大年份内日期的最小日期

在这种情况下,该声明将被删除

select * from 
             (    
                select add_months(sysdate,-2)dt from dual
                union
                select add_months(sysdate,-1) from dual
                union
                select add_months(sysdate,2)from dual
                union
                select add_months(sysdate,3) from dual
             )

我不确定这是否是你想要的。这个问题我不太清楚

with dates as
         (    
            select add_months(sysdate,-2)dt from dual
            union
            select add_months(sysdate,-1) from dual
            union
            select add_months(sysdate,2)from dual
            union
            select add_months(sysdate,3) from dual
         )
      select min(dt) from dates 
        where trunc(dt,'YYYY') = (select max(trunc(dt, 'YYYY')) from dates)

我不确定这是否是你想要的。这个问题我不太清楚

with dates as
         (    
            select add_months(sysdate,-2)dt from dual
            union
            select add_months(sysdate,-1) from dual
            union
            select add_months(sysdate,2)from dual
            union
            select add_months(sysdate,3) from dual
         )
      select min(dt) from dates 
        where trunc(dt,'YYYY') = (select max(trunc(dt, 'YYYY')) from dates)
您可以使用这个:

SELECT MIN(dt) FROM 
(SELECT add_months(SYSDATE, -2) dt
    FROM dual
    UNION
    SELECT add_months(SYSDATE, -1)
      FROM dual
    UNION
    SELECT add_months(SYSDATE, 2)
      FROM dual
    UNION
    SELECT add_months(SYSDATE, 3) FROM dual)
WHERE trunc(dt, 'YYYY') > trunc(SYSDATE, 'YYYY');
您可以使用这个:

SELECT MIN(dt) FROM 
(SELECT add_months(SYSDATE, -2) dt
    FROM dual
    UNION
    SELECT add_months(SYSDATE, -1)
      FROM dual
    UNION
    SELECT add_months(SYSDATE, 2)
      FROM dual
    UNION
    SELECT add_months(SYSDATE, 3) FROM dual)
WHERE trunc(dt, 'YYYY') > trunc(SYSDATE, 'YYYY');

是的,我想勒内的帖子能满足你的需要。我总是忘了用写的
,是的,我想勒内的帖子能满足你的需要。我总是忘记使用
时使用
联合所有
联合
联合
速度较慢,因为它显式删除重复项。使用
联合所有
联合
UNION
的速度较慢,因为它显式地删除了重复项。+1因为我知道一定可以像您那样构造查询,但我自己太懒了+1因为我知道一定可以用你的方式来表达查询,但我自己太懒了!