2015-02-07 2 views
0

Я ищу данные в течение нескольких недель в столбцах.Oracle SQL: получение данных за несколько недель

SELECT 
    MAR.AR, 
    SUM(CASE 
      WHEN MAR.CREATION_DAY >= TO_DATE({RUN_DATE_YYYYMMDD}, 'YYYYMMDD')-28 
        AND MAR.CREATION_DAY <= TO_DATE({RUN_DATE_YYYYMMDD}, 'YYYYMMDD') 
       THEN 1 
      ELSE 0 
      END) AS [WEEK_N-3] 
    SUM(CASE 
      WHEN MAR.CREATION_DAY >= TO_DATE({RUN_DATE_YYYYMMDD}, 'YYYYMMDD')-21 
        AND MAR.CREATION_DAY <= TO_DATE({RUN_DATE_YYYYMMDD}, 'YYYYMMDD') 
       THEN 1 
      ELSE 0 
      END) AS [WEEK_N-2] 
    SUM(CASE 
      WHEN MAR.CREATION_DAY >= TO_DATE({RUN_DATE_YYYYMMDD}, 'YYYYMMDD')-14 
        AND MAR.CREATION_DAY <= TO_DATE({RUN_DATE_YYYYMMDD}, 'YYYYMMDD') 
       THEN 1 
      ELSE 0 
      END) AS [WEEK_N-1] 
    SUM(CASE 
      WHEN MAR.CREATION_DAY >= TO_DATE({RUN_DATE_YYYYMMDD}, 'YYYYMMDD')-7 
        AND MAR.CREATION_DAY <= TO_DATE({RUN_DATE_YYYYMMDD}, 'YYYYMMDD') 
       THEN 1 
      ELSE 0 
      END) AS [WEEK_N] 
FROM 
    TABLE_DATA MAR 
WHERE 
    MAR.CREATION_DAY >= TO_DATE({RUN_DATE_YYYYMMDD}, 'YYYYMMDD')-28 
    AND MAR.CREATION_DAY <= TO_DATE({RUN_DATE_YYYYMMDD}, 'YYYYMMDD') 
GROUP BY 
    MAR.AR 

Ошибки SQL при использовании {RUN_Date_YYYYMMDD}. Есть ли альтернативный способ сделать это?

Спасибо!

+3

Что '{}' RUN_Date_YYYYMMDD должно означать? – Mat

+0

Он возвращает дату, которую я выбираю в своем приложении. Обычно я выбираю субботу. Я не хочу указывать дату в запросе. – KayCee

+1

Каков текст запроса, переданного Oracle? – Mat

ответ

0

бы использовать

'{RUN_Date_YYYYMMDD}' 

вместо

{RUN_Date_YYYYMMDD} 
Смежные вопросы