отображать количество посещений за месяц в этом году - PullRequest
0 голосов
/ 15 февраля 2012

Я хочу отобразить общее количество посещений за месяц в этом году.Но следующий запрос возвращает код ошибки отсутствующего выражения.Что я пропустил?

 SELECT CASE 
     WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '),     'mm/dd/yyyy')  = 1 THEN 'January '
     WHEN extract(month from date  TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '),   'mm/dd/yyyy')  = 2 THEN 'February'
WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy')  = 3 THEN 'March'
WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy')  = 4 THEN 'April'
 WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy')  = 5 THEN 'May'
 WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy')  = 6 THEN 'June'
WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy')  = 7 THEN 'July'
WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy')  = 8 THEN 'August'
WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy')  = 9 THEN 'September'
WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy')  = 10 THEN 'October'   
 WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy')  = 11 THEN 'November'   
 ELSE 'December'
    END AS "Month " , 
    COUNT(*) AS "Number of visits"
 FROM allrecord where  extract(year from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy')= extract(year from date sysdate) 
 GROUP BY CASE 
 WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy')  = 1 THEN 'January '
     WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy')  = 2 THEN 'February'
 WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy')  = 3 THEN 'March'
 WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy')  = 4 THEN 'April'
 WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy')  = 5 THEN 'May'
 WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy')  = 6 THEN 'June'
 WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy')  = 7 THEN 'July'
 WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy')  = 8 THEN 'August'
 WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy')  = 9 THEN 'September'
 WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy')  = 10 THEN 'October'   
 WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy')  = 11 THEN 'November'   

       ELSE 'December'
          END;

Дополнительный вопрос, который я хочу задать, я создаю приложение, используя конструктор приложений ORacle.Но после того, как я создал страницу и хочу отредактировать записи в форме, сообщение об ошибке показывает, что данные можно получить.Что это значит?Какие шаги я пропустил?

Ответы [ 2 ]

4 голосов
/ 15 февраля 2012

Этот запрос может быть сокращен до:

  select to_char(VISIT_TIME, 'fmMonth') as "Month"
        ,count(*) as "Number of Visits"
    from ALLRECORD
   where extract(year from VISIT_TIME) = extract(year from sysdate)
group by to_char(VISIT_TIME, 'fmMonth');

Ошибка пропущенного выражения возникнет из-за помещения ключевого слова date перед to_date в функциях extract.Это ненужно.Вы можете использовать:

select extract (year from date '2011-01-01') from sys.dual

или:

select extract (year from to_date('2011-01-01')) from sys.dual

Но никогда:

select extract (year from date to_date('2011-01-01')) from sys.dual
1 голос
/ 15 февраля 2012

Разве у Oracle нет функции для извлечения названия месяца из такой даты:

SELECT TO_CHAR(visit_time 'MONTH') as month
COUNT(*) AS "Number of visits"
FROM allrecord 
WHERE  extract(year from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy')= extract(year from date sysdate) 
GROUP BY TO_CHAR(visit_time 'MONTH')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...