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
:
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
それはこの問題が発生したとき、あなたのSS.VerificationFlagが1であることは可能ですか? – quest4truth