У меня есть таблица под названием "Employee"T-Sql получить Employees даты начала и окончания на ежегодной основе
таблицы Employee имеет под столбцами
Id (Identity)
EmploymentStartDate (datetime),
EmploymentEndDate (nullable datetime)
T-SQL Query
DECLARE @FromYear int, @ToYear int
SELECT @FromYear = YEAR(MIN(EmploymentStartDate)),
@ToYear = YEAR(GETDATE())
FROM Employee
;WITH CTE AS
(
SELECT @FromYear As TheYear
UNION ALL
SELECT TheYear + 1
FROM CTE
WHERE TheYear < @ToYear
)
SELECT TheYear as [Year],
COUNT
(
CASE WHEN TheYear <= YEAR(COALESCE(EmploymentEndDate, GETDATE())) THEN
1
END
) As [EmployeeCountPerYear]
FROM CTE
INNER JOIN Employee ON(TheYear >= YEAR(EmploymentStartDate))
GROUP BY TheYear
Вопрос:
Таблица служащих имеет данные строк.
Id - EmploymentStartDate - EmploymentEndDate
1 - '2012-10-10' - null
2 - '2014-10-10' - '2015-10-10'
3 - '2015-10-10' - null
4 - '2016-10-10' - null
5 - '2017-10-10' - null
Согласно вышеприведенной таблице значения строк Результат должен быть, как показано ниже на мой запрос
TheYear - EmployeeCountPerYear
2012 - 1
2013 - 1
2014 - 2
2015 - 3 (Because EmploymentEndDate has one employee that worked in 2015)
2016 - 3
2017 - 4
Однако, если я запускаю мой запрос я не могу видеть результат как above.I я не уверен, что я могу сказать проблема, но Я пытаюсь найти всех сотрудников. Дата начала работы и дата окончания года.. Любая помощь будет оказана. Спасибо.