Вероятно, у меня был бы столбец «последний обновленный» (изначально он будет хранить дату создания), а затем напишите:
SELECT CASE WHEN
YEAR(DATEADD(mm, -3, LastRenewed)) < (YEAR(GETDATE()) - 1)
THEN 'Active'
ELSE 'Expired' END
AS Status
FROM TableName
Я не понимаю, в чем проблема с ответом @ Барри, если честно. Если вам нужно использовать эту логику в нескольких местах, вы можете избежать повторения, используя представление, например:
CREATE VIEW ActiveOrNot AS
SELECT Account, CASE WHEN
YEAR(DATEADD(mm, -3, LastRenewed)) < (YEAR(GETDATE()) - 1)
THEN 'Active'
ELSE 'Expired' END
AS Status
FROM TableName
После этого вы можете выбрать только активные учетные записи, используя:
SELECT Account
FROM ActiveOrNot
WHERE Status = 'Active'