2015-04-28 4 views
1

Я пытаюсь подсчитать количество встреч в каждом месяце за год 2014 года, когда форматирование даты похоже на '22 -JAN-14 ' Я пробовал варианты этих двух кодов, поэтому далеко и оба придумали «YEAR»: неверный идентификатор.Число записей в месяц

КОД 1

SELECT count(*), MONTH(dateofappointment) as month, YEAR(dateofappointment) as year 
FROM appointment 
GROUP BY month 
HAVING YEAR(dateofappointment) ='14' 
ORDER BY month; 

и КОД 2

select count(*) 
from appointment 
group by month(dateofappointment) 
having year(dateofappointment) = '14'; 

Любая помощь оценена.

+0

Какая у вас СУБД? MS SQL Sever? Является ли 'dateofappointment'' столбцом 'DateTime' или' varchar'? –

+0

@Selva TS, я использую oracle, и весь документ, который мне предоставлен, говорит, что это тип 'date'. – Shandep

+0

@Shandep Обновлен мой ответ на использование oracle – Matt

ответ

3

Используйте Extract Reference

SELECT EXTRACT(month FROM dateofappointment) "Month", count(*) 
FROM appointment 
WHERE EXTRACT(YEAR FROM dateofappointment) = '2014' 
GROUP BY EXTRACT(month FROM dateofappointment) 
ORDER BY EXTRACT(month FROM dateofappointment); 

Чтобы иметь название месяца, а не номер

SELECT TO_CHAR(TO_DATE(EXTRACT(month FROM dateofappointment), 'MM'), 'MONTH') "Month", count(*) 
FROM appointment 
WHERE EXTRACT(YEAR FROM dateofappointment) = '2014' 
GROUP BY EXTRACT(month FROM dateofappointment) 
ORDER BY EXTRACT(month FROM dateofappointment); 
+0

Обновлен мой ответ на использование oracle, как вы указали – Matt

+0

Спасибо, наконец, это сработало. Мне просто пришлось сменить 14 на 2014 год, как предложил Зоар. – Shandep

+0

Есть ли способ изменить отображение месяцев от чисел до имени месяца? – Shandep

0

Ваш год должен быть целым числом.
Кроме того, если ваши встречи не произошло в первом веке, ваш год должен быть 2014.

попробовать это:

select EXTRACT(month FROM dateofappointment), count(*) 
from appointment 
where EXTRACT(year FROM dateofappointment) = 2014 
group by EXTRACT(month FROM dateofappointment) 
0

Данные по месяцам и годам, отсортировано по дате от старых к новым:

SELECT 
    EXTRACT(year FROM dateofappointment) "Year", 
    EXTRACT(month FROM dateofappointment) "Month", 
    count(*) 
FROM 
    appointment 
GROUP BY 
    EXTRACT(year FROM dateofappointment), 
    EXTRACT(month FROM dateofappointment) 
ORDER BY 
    1, 
    2; 
Смежные вопросы