Я написал следующий запрос, чтобы получить срок пребывания сотрудников в год.Найти сотрудника для компании
Т.е. сгруппированы «менее 1 года», «1-2 года», «2-3 года» и «более 3 лет».
Для этого я сравниваю с сотрудниками end_date
.
Но я не могу получить правильный результат по сравнению с укомплектованным персоналом end_date
.
Я вставлял полный код ниже, но число, которое я получаю, неверно.
Некоторые сотрудники, которые работали более 2 лет, падают под < 1 год колонке.
DECLARE @Project_Id Varchar(10)='ITS-004275';
With Cte_Dates(Period,End_date,Start_date,Project_Id)
As
(
SELECT '<1 Year' AS Period, GETDATE() AS End_Date,DATEADD(YY,-1,GETDATE()) AS Start_date,@Project_Id AS Project_Id
UNION
SELECT '1-2 Years', DATEADD(YY,-1,GETDATE()),DATEADD(YY,-2,GETDATE()),@Project_Id
UNION
SELECT '2-3 Years', DATEADD(YY,-2,GETDATE()),DATEADD(YY,-3,GETDATE()),@Project_Id
UNION
SELECT '>3 Years', DATEADD(YY,-3,GETDATE()),'',@Project_Id
),
--select * from Cte_Dates
--ORDER BY Start_date DESC
Cte_Staffing(PROJECT_ID,EMP_ID,END_DATE) AS
(
SELECT FK_Project_ID,EMP_ID,MAX(End_Date)AS END_DATE FROM DP_Project_Staffing
WHERE [email protected]_Id
GROUP BY FK_Project_ID,Emp_ID
)
SELECT D.PROJECT_ID,D.Start_date,D.End_date,COUNT(S.EMP_ID) AS Count,D.Period
FROM Cte_Staffing S
RIGHT JOIN Cte_Dates D
ON D.Project_Id=S.PROJECT_ID
AND S.END_DATE<D.End_date AND S.END_DATE>D.Start_date
GROUP BY D.PROJECT_ID,D.Start_date,D.End_date,D.Period
я обязательно на основе текущей даты, дай мне START_DATE по END_DATE для следующих условий: - <1 год, 1-2 года, 2-3 года, <3 – Puskar
года я сделать> 3-х лет NULL, а не '' и использовать это в своем предложении where. –