Sql 每月盘点记录

Sql 每月盘点记录,sql,sql-server,sql-server-2008,count,Sql,Sql Server,Sql Server 2008,Count,我试图统计2014年每个月的预约次数,日期格式类似于'2014年1月22日' 到目前为止,我已经尝试了这两个代码的变体,但都得到了“年”:无效标识符 代码1 SELECT count(*), MONTH(dateofappointment) as month, YEAR(dateofappointment) as year FROM appointment GROUP BY month HAVING YEAR(dateofappointment) ='14' ORDER BY month; 代

我试图统计2014年每个月的预约次数,日期格式类似于'2014年1月22日' 到目前为止,我已经尝试了这两个代码的变体,但都得到了“年”:无效标识符

代码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';

感谢您的帮助。

请使用
摘录
参考资料

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);

您的年份应为整数。
此外,除非你的任命发生在第一世纪,否则你的任期应该是2014年

试试这个:

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

按月份和年份的数据,按日期从最早到最新排序:

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;

您的关系数据库管理系统是什么?SQL服务器小姐?是
dateofappoint
DateTime
列还是
varchar
?@Selva TS,我使用的是oracle,我收到的所有文档都说它是“date”类型。Shandep更新了我的答案,使用了oracle更新了我的答案,按照您的说明使用了oracle谢谢,这终于奏效了。正如佐哈尔所建议的那样,我不得不将14改为2014。有没有办法将月份的显示从数字改为月份名称?