2011-08-10 15 views

答えて

6

これらは7月に取得されていません

where to_date(year || month, 'YYYYMM') 
     between add_months(trunc(sysdate, 'MM'), -8) and trunc(sysdate) 
3

これを試してみてください:

SELECT * 
    FROM myTable 
WHERE (year, month) IN 
(
SELECT TO_CHAR(ADD_MONTHS(SYSDATE, -level), 'RRRR') AS year, 
    TO_CHAR(ADD_MONTHS(SYSDATE, -level), 'MM') AS month 
    FROM dual 
    CONNECT BY LEVEL < 8 
) 

別のバージョン:

SELECT * 
    FROM myTable 
WHERE year||month IN 
(
SELECT TO_CHAR(ADD_MONTHS(SYSDATE, -level), 'RRRRMM') AS yearmonth 
    FROM dual 
    CONNECT BY LEVEL < 8 
) 
+0

を試してみてください。彼らは6月から12月に戻る。 – Muhd

+0

@Cyber​​nate - あなたはあなたの 'ADD_MONTHS'呼び出しで-1を取り除き、あなたのCONNECT BYで<= 8をしたいと思っています。それは2010年12月から2011年7月まで返されます。 –

+0

@Muhd Justin:私の悪い.. – Chandu

0

私は考えることができるベストはこれです:

SELECT * FROM table WHERE (MONTH || YEAR) IN ('012011','122010', et cetera) 

ことはないので、それは、強引な方法であり、クエリを一般化したい場合は実行可能です。

関連する問題