【发布时间】:2023-01-07 23:17:55
【问题描述】:
我有一个员工表,我需要根据指定月份的最后 12 个月的课程 1 加入日期获取员工的详细信息。
表设计
+-----------+-------------+
| Field | Type |
+-----------+-------------+
| emp_name | varchar(30) |
| join_date | date |
| emp_id | int(5) |
| c1_date | date |
+-----------+-------------+
我想在下面显示输出。 c1_date 过去 12 个月员工详细信息的加入日期。
例如,今天日期是 7/1/2023
第一个月:
emp_id , emp_name , joining_date , c1_date
1 xxx 21-7-7 12-12-2022
2 yyy 22-2-1 1-12-2022
第二个月:
emp_id , emp_name , joining_date , c1_date
11 abc 21-7-7 12-11-2022
21 cde 22-2-1 1-11-2022
就像上面我想生成的过去 12 个月一样,我已经为此要求创建了一个过程,但是我得到的所有记录都没有 c1_date -1、-2、-3..
CREATE PROCEDURE [dbo].[StudentReport]
@FromDate datetime =null
AS
DECLARE @count INT;
SET @count = -1;
WHILE @count>= -12
BEGIN
SELECT *
FROM [Student]
WHERE [Group Type] ='AIS-140' AND
[c1_date] BETWEEN DATEADD(MONTH, @count, GETDATE()) AND GETDATE()
SET @count = @count - 1;
END;
帮我弄清楚我在哪里犯了错误。
【问题讨论】:
-
Pet Peeve ... 模棱两可的日期 我怀疑循环不是必需的,应该避免。简单连接到日历表甚至临时数字表
标签: sql-server select stored-procedures dateadd