Ich habe eine Tabelle "Mitarbeiter"T-SQL- erhalten Mitarbeiter Start- und Enddaten auf jährlicher Basis
Mitarbeiter Tabellen genannt hat unter Spalten
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
Frage:
Employee-Tabelle hat unter Zeilen Daten.
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
Nach oben Tabellenzeile Wert ergeben soll, wie unten auf meiner Anfrage
TheYear - EmployeeCountPerYear
2012 - 1
2013 - 1
2014 - 2
2015 - 3 (Because EmploymentEndDate has one employee that worked in 2015)
2016 - 3
2017 - 4
jedoch sein, wenn ich meine Abfrage ausführen kann ich nicht sehen, das Ergebnis als above.I nicht sicher ist ich das sagen kann, Problem aber ich versuche, alle Mitarbeiter arbeiten begonnen Datum und Ended Datum von Jahr zu Jahr .Any Hilfe appreated.Thank Sie werden zu finden.