2011-12-22 17 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 
      ) 

Resultオラクル - 最大年クエリエラー、私は日付の最小値の最大年にしたい

( "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 *

編集:あなたの質問を再読み込みして、所望の出力を比較した後、あなた はおそらく最大年内の日付の最小の日付を求めています。その場合

、文は

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

ええ、私はRenéの投稿はあなたが必要とするものだと思います。私はあなたがしたようにクエリを定式化することが可能でなければならないことを知っていたので、 'with' –

関連する問題