DROP TABLE SS;
go
create table SS (
VerificationFlag tinyint,
ExpirationDate1 datetime,
ExpirationDate2 datetime
)
INSERT INTO SS(VerificationFlag, ExpirationDate1, ExpirationDate2) VALUES (0, NULL, NULL)
INSERT INTO SS(VerificationFlag, ExpirationDate1, ExpirationDate2) VALUES (0, '20140214', NULL)
INSERT INTO SS(VerificationFlag, ExpirationDate1, ExpirationDate2) VALUES (0, NULL, '20160619')
INSERT INTO SS(VerificationFlag, ExpirationDate1, ExpirationDate2) VALUES (0, '20140214', '20160619')
INSERT INTO SS(VerificationFlag, ExpirationDate1, ExpirationDate2) VALUES (1, NULL, NULL)
INSERT INTO SS(VerificationFlag, ExpirationDate1, ExpirationDate2) VALUES (1, '20140214', NULL)
INSERT INTO SS(VerificationFlag, ExpirationDate1, ExpirationDate2) VALUES (1, NULL, '20160619')
INSERT INTO SS(VerificationFlag, ExpirationDate1, ExpirationDate2) VALUES (1, '20140214', '20160619')
INSERT INTO SS(VerificationFlag, ExpirationDate1, ExpirationDate2) VALUES (1, NULL, NULL)
INSERT INTO SS(VerificationFlag, ExpirationDate1, ExpirationDate2) VALUES (1, '20160214', NULL)
INSERT INTO SS(VerificationFlag, ExpirationDate1, ExpirationDate2) VALUES (1, NULL, '20140619')
INSERT INTO SS(VerificationFlag, ExpirationDate1, ExpirationDate2) VALUES (1, '20160214', '20140619')
INSERT INTO SS(VerificationFlag, ExpirationDate1, ExpirationDate2) VALUES (0, '20160214', '20140619')
DECLARE @from DATETIME;
SET @from = '20151001';
SELECT
SS.VerificationFlag,
SS.ExpirationDate1,
SS.ExpirationDate2,
@from AS FromDate,
CASE
WHEN ISNULL(SS.VerificationFlag, 0) = 1 THEN 1
WHEN (ISNULL(SS.ExpirationDate1, @from) >= @from) AND (ISNULL(SS.ExpirationDate2, @from) >= @from) THEN 1
ELSE 0
END AS ResultingFlag
FROM SS
Mit Ergebnisse:
VerificationFlag ExpirationDate1 ExpirationDate2 FromDate ResultingFlag
---------------- ----------------------- ----------------------- ----------------------- -------------
0 NULL NULL 2015-10-01 00:00:00.000 1
0 2014-02-14 00:00:00.000 NULL 2015-10-01 00:00:00.000 0
0 NULL 2016-06-19 00:00:00.000 2015-10-01 00:00:00.000 1
0 2014-02-14 00:00:00.000 2016-06-19 00:00:00.000 2015-10-01 00:00:00.000 0
1 NULL NULL 2015-10-01 00:00:00.000 1
1 2014-02-14 00:00:00.000 NULL 2015-10-01 00:00:00.000 1
1 NULL 2016-06-19 00:00:00.000 2015-10-01 00:00:00.000 1
1 2014-02-14 00:00:00.000 2016-06-19 00:00:00.000 2015-10-01 00:00:00.000 1
1 NULL NULL 2015-10-01 00:00:00.000 1
1 2016-02-14 00:00:00.000 NULL 2015-10-01 00:00:00.000 1
1 NULL 2014-06-19 00:00:00.000 2015-10-01 00:00:00.000 1
1 2016-02-14 00:00:00.000 2014-06-19 00:00:00.000 2015-10-01 00:00:00.000 1
0 2016-02-14 00:00:00.000 2014-06-19 00:00:00.000 2015-10-01 00:00:00.000 0
Ist es möglich, dass Ihr SS.VerificationFlag 1 ist, wenn dies geschieht? – quest4truth