Если я понимаю ваш вопрос, вы можете попробовать следующий подход.Сначала получите разницу между датами и датами, используя DATEFROMPARTS()
и DATEDIFF()
, а затем рассчитайте эту разницу как годы и месяцы.
Ввод
CREATE TABLE S_ResumeWorkHistory (
ResumeID int,
FromMonth int,
FromYear int,
ToMonth int,
ToYear int,
CurrentlyWorking varchar(1)
)
INSERT INTO S_ResumeWorkHistory
(ResumeID, FromMonth, FromYear, ToMonth, ToYear, CurrentlyWorking)
VALUES
(17, 6, 2015, 10, 2016, 'N'),
(17, 10, 2016, -1, -1, 'Y')
Выписка
;WITH MonthsCTE AS (
SELECT
ResumeId,
CASE
WHEN CurrentlyWorking = 'N' THEN DATEDIFF(month, DATEFROMPARTS(FromYear, FromMonth, 1), DATEFROMPARTS(ToYear, ToMonth, 1))
ELSE DATEDIFF(month, DATEFROMPARTS(FromYear, FromMonth, 1), GETDATE())
END AS Months
FROM S_ResumeWorkHistory
)
SELECT
ResumeId,
(CONVERT(nvarchar(100), SUM(Months) / 12)) + ' years, ' +
(CONVERT(nvarchar(100), SUM(Months) % 12)) + ' months' AS Experience
FROM MonthsCTE
GROUP BY ResumeId
Выход
ResumeId Experience
17 3 years, 9 months