2011-12-22 3 views
0
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 
      ) 

ResultOracle - Максимальный год ошибка запроса

я хочу максимально года минимальной даты ("22.02.2012 12:02:08")
Как это сделать?

+1

Использование 'UNION ALL' не' UNION', 'UNION' медленнее, потому что она явно удаляет дубликаты. – Benoit

ответ

2

Вы можете использовать этот один:

SELECT * FROM 
(
    SELECT add_months(sysdate,-2)dt from dual 
    UNION ALL 
    SELECT add_months(sysdate,-1) from dual 
    UNION ALL 
    SELECT add_months(sysdate,2)from dual 
    UNION ALL 
    SELECT add_months(sysdate,3) from dual 
    ORDER BY trunc(dt,'YEAR') DESC, trunc(dt,'MONTH') ASC 
) 
WHERE rownum = 1 
+0

+1, потому что я знал, что должно быть возможно сформулировать запрос так, как вы это делали, но мне было слишком лениво сделать это! –

2

использование select max(dt) вместо select *

Edit: перечитав свой вопрос и сравнивая свой желаемый результат, вы, вероятно, хотите минимальная дата из даты в пределах максимального года.

В этом случае заявление будет

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) 
0

Не уверен, что это ли то, что вы ищете. Вопрос мне не совсем понятен.

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'); 
+0

Да, я думаю, что сообщение Рене делает то, что вам нужно. Я продолжаю забывать о 'with' –

Смежные вопросы