>>>declare @t table (id int identity, col1 Int, col2 Int) >>> >>>insert into @t (col1, col2) values (1, 3), (2, 5) >>> >>>select * from @t where not (col1 > 3 and col2 < 6) >>> >>>select * from @t T where not exists (select * from @t T1 where col1 > 3 and col2 < 6 and T.id = T1.id) >>> >>>select * from @t where col1 <=3 or col2 >=6>>>
>>DECLARE @ModDate DateTime >>DECLARE @NoStatus Int >>DECLARE @ModDate2 DateTime >>DECLARE @NoStatus2 Int >>DECLARE @ModDate3 DateTime >>DECLARE @NoStatus3 Int >> >>SET @ModDate='2013-11-09 10:31:18' >>SET @NoStatus=5 >>SET @ModDate2='2014-11-03 10:31:18' >>SET @NoStatus2=8 >>SET @ModDate3='2014-11-03 10:31:18' >>SET @NoStatus3=7 >> >>SELECT Client.Numero FROM Client (NOLOCK) >> WHERE NOT (Client.ModDate<@ModDate AND Client.NoStatus=@NoStatus) AND >> NOT (Client.ModDate<@ModDate2 AND Client.NoStatus=@NoStatus2) AND >> NOT (Client.ModDate<@ModDate3 AND Client.NoStatus=@NoStatus3) >>>>
>>DECLARE @ModDate DateTime >>DECLARE @NoStatus Int >>DECLARE @ModDate2 DateTime >>DECLARE @NoStatus2 Int >>DECLARE @ModDate3 DateTime >>DECLARE @NoStatus3 Int >> >>SET @ModDate='2013-11-09 10:31:18' >>SET @NoStatus=5 >>SET @ModDate2='2014-11-03 10:31:18' >>SET @NoStatus2=8 >>SET @ModDate3='2014-11-03 10:31:18' >>SET @NoStatus3=7 >> >>SELECT Client.Numero FROM Client (NOLOCK) >> WHERE (Client.ModDate>=@ModDate OR Client.NoStatus<>@NoStatus) AND >> (Client.ModDate>=@ModDate2 OR Client.NoStatus<>@NoStatus2) AND >> (Client.ModDate>=@ModDate3 OR Client.NoStatus<>@NoStatus3) >>>
SELECT Client.Numero FROM Client WHERE Numero NOT IN (SELECT Numero FROM Clients WHERE ModDate < @ModDate AND Status = @NoStatus) AND Numero NOT IN (SELECT Numero FROM Clients WHERE ModDate2 < @ModDate3 AND Status = @NoStatus2) AND Numero NOT IN (SELECT Numero FROM Clients WHERE ModDate2 < @ModDate3 AND Status = @NoStatus3)Easier to understand, but not as efficient though.