Попробуйте это. Обратите внимание, что я использовал smalldatetime для StartRejection, поскольку некоторые читатели могут не работать с SQL 2008 +.
DECLARE @EmailRejection TABLE (EmailName varchar(150), StartRejection smalldatetime, Duration smallint, IsIndefinate bit)
DECLARE @Today smalldatetime, @Duration smallint
SET @Today = CONVERT(smalldatetime, CONVERT(varchar, GETDATE(),112))
SET @Duration = 5
INSERT INTO @EmailRejection(EmailName, StartRejection, Duration, IsIndefinate) VALUES('user1@domain.com', @Today-3, @Duration, 0)
INSERT INTO @EmailRejection(EmailName, StartRejection, Duration, IsIndefinate) VALUES('user2@domain.com', @Today-4, @Duration, 0)
INSERT INTO @EmailRejection(EmailName, StartRejection, Duration, IsIndefinate) VALUES('user3@domain.com', @Today-5, @Duration, 0)
INSERT INTO @EmailRejection(EmailName, StartRejection, Duration, IsIndefinate) VALUES('user4@domain.com', @Today-6, @Duration, 0)
INSERT INTO @EmailRejection(EmailName, StartRejection, Duration, IsIndefinate) VALUES('user4@domain.com', @Today-10, @Duration, 1)
SELECT * FROM @EmailRejection
WHERE (IsIndefinate = 1) OR (IsIndefinate = 0 AND StartRejection > DATEADD(dd, 0-Duration, GETDATE()))
IsIndefinate (sic должен быть IsIndefinite)
/ Spellingpolice