Oracle SQL: получите данные за последние восемь месяцев (с колонками YEAR и MONTH) - PullRequest
0 голосов
/ 11 августа 2011

У меня есть таблица, в которой есть столбцы YEAR и MONTH, которые представляют собой varchars, имеющие такой формат, как MONTH = '02', YEAR = '2011'.

Какой запрос я могу использовать, чтобы получить последнийданные за восемь месяцев, исключая текущий месяц?

Ответы [ 3 ]

6 голосов
/ 11 августа 2011

Попробуйте

where to_date(year || month, 'YYYYMM') 
       between add_months(trunc(sysdate, 'MM'), -8) and trunc(sysdate) 
3 голосов
/ 11 августа 2011

Попробуйте это:

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 голосов
/ 11 августа 2011

Лучшее, что я могу придумать, это:

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

Это метод грубой силы, поэтому он не осуществим, если вы хотите обобщить ваш запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...