我有一个雇员表,我需要从指定的月份获取过去两年中基于月度的雇员总数。
表格设计
+-----------+-------------+
| Field | Type |
+-----------+-------------+ |
| emp_name | varchar(30) |
| join_date | date |
| emp_id | int(5) |
+-----------+-------------+
如果我在下拉菜单中选择当前月份(dec 2022),我需要显示下面的输出。
+-----------+-------------+
| Month | Emp.Count |
+-----------+-------------+
| Dec 22 | 10 |
| Nov 22 | 8 |
| Oct 22 | 3 |
| ...... | . |
| ...... | . |
| ...... | . |
| Dec 21 | 5 |
| Nov 21 | 6 |
| Oct 21 | 7 |
| Sept 21 | 7 |
+-----------+-------------+
我尝试了以下查询,但计数与Jan月份相加(2021年和2022年)
SELECT MAX(DATENAME(MM,[join_date])) AS Month, COUNT(1) AS "Total.EMP"
FROM [EMP_TABLE]
WHERE [join_date] BETWEEN DATEADD(yy, DATEDIFF(yy,0,GETDATE()), 0) AND GETDATE()
GROUP BY MONTH([join_date]);
我需要形成存储过程(我将传递月份和年份作为参数),我在月份列下得到的输出是一月、十二月,而不是十二月22日。根据月份值和年份,我需要生成过去24个月的计数结果。
1条答案
按热度按时间wxclj1h51#
原始查询的问题有两个方面。首先,
GROUP BY
子句只包含月份。其次,WHERE
中的DATEADD
使用不正确。以下是对代码的最小修改更正:| 月份|年份|Total.EMP|
| - ------| - ------| - ------|
| 十二月份|小行星2021|第二章|
| 十二月份|小行星2022|三个|
| 十一月|小行星2021|第二章|
| 十一月|小行星2022|第二章|
fiddle