2016-10-04 37 views
3

我有一个包含admission_date和student_status列的学生表,我想获得特定年份的每个月的全部入场许可,而admission_date列类型是DateTime。即如何获取特定月份的数据sql

**Month**  **Total_Admission** 
Jan-2016    90 
Feb-2016    70 
Mar-2016    109 

回答

0

与下面的查询尝试。

SELECT replace(right(convert(varchar, admission_date, 106), 8), ' ', '-') Month,COUNT(*) TotalAdmissions 
FROM yourTable 
WHERE YEAR(admission_date) = 2016 
GROUP BY replace(right(convert(varchar, admission_date, 106), 8), ' ', '-') 
0

您可以使用extract(year_month...检索每月统计。事情是这样的:

SELECT 
    extract(year_month FROM date(admission_date)) month, 
    count(*) total_admission 
FROM your_table; 
0

尝试这样做:

SELECT COUNT(*) AS admission_total 
FROM yourTable 
GROUP BY MONTH(admission_date) 
0

试试这个:

SELECT LEFT(DATENAME(MONTH,admission_date),3)+'-2016' as MonthNumber,COUNT(*) TotalAdmissions 
FROM TableName 
WHERE YEAR(admission_date) = 2016 
GROUP BY LEFT(DATENAME(MONTH,admission_date),3)+'-2016' 
+0

其获得每个日期的招生,但我想,因为它不是在聚合函数或GROUP BY子句中包含每个月 –

+0

列“Student.admission_date”在选择列表中无效。 –

+0

是的,我已经尝试过,但我可以得到它像jan-2016 –

相关问题