July 9, 2006 at 5:58 am
Your problem most probably arises from the presence of NULLs in your employees table:
Q1:
i ValidReps_Original_Query from
select 1 i union all select 2 union all select 3 union all select 4 union all select 5 union all select null) ActualReps
i in (1,2,4,null) --ValidReps
i InvalidReps_Original_Query_1
select 1 i union all select 2 union all select 3 union all select 4 union all select 5 union all select null) ActualReps
i not in (1,2,4,null) --ValidReps
i InvalidReps_Original_Query_2
select 1 i union all select 2 union all select 3 union all select 4 union all select 5 union all select null) ActualReps
i not in
* from
select 1 i union all select 2 union all select 3 union all select 4 union all select 5 union all select null) ActualReps
i in (1,2,4,null) --ValidReps
--Q1
@i int
case when 1 = @i then 'TRUE'
i ValidReps_Original_Query_Expanded from
select 1 i union all select 2 union all select 3 union all select 4 union all select 5 union all select null) ActualReps
i = 1 or i = 2 or i = 4 /* or i = null */ --last disjunct is never true, so irrelevant
i InvalidReps_Original_Query_1_Expanded from
select 1 i union all select 2 union all select 3 union all select 4 union all select 5 union all select null) ActualReps
i <> 1 and i <> 2 and i <> 4 and i <> null --last conjunct never true, so whole expression never true.
sign(isnull(ValidReps.i,0)) IsValid, count(*) ActualReps
select 1 i union all select 2 union all select 3 union all select 4 union all select 5 union all select null) ActualReps
join (select 1 i union select 2 union select 4 union select null) ValidReps --DISTINCT list
ActualReps.i = ValidReps.i
by sign(isnull(ValidReps.i,0))
1 IsValid, count(*) ActualReps
select 1 i union all select 2 union all select 3 union all select 4 union all select 5 union all select null) ActualReps
(select 1 i union select 2 union select 4 union select null) ValidReps --DISTINCT list
ActualReps.i = ValidReps.i
0 IsValid, count(*) ActualReps
select 1 i union all select 2 union all select 3 union all select 4 union all select 5 union all select null) ActualReps
join (select 1 i union select 2 union select 4 union select null) ValidReps --DISTINCT list
ActualReps.i = ValidReps.i
ValidReps.i is null
Tim Wilkinson
"If it doesn't work in practice, you're using the wrong theory"
- Immanuel Kant
August 30, 2006 at 9:11 am
This is a late update but the problem was with nulls. Thank you.
Viewing 2 posts - 1 through 3 (of 3 total)
You must be logged in to reply to this topic. Login to reply