If I understand your criteria correctly, depending on what the value of @AddedBy is you want different record/results.
You could try something like this:
declare @TabNum table(id int identity(1,1), num int);
insert into @TabNum
select 987 num
union all select 458
union all select 0
union all select 45
union all select 0
union all select 0
union all select 0
union all select 58
union all select 569
union all select 2
;
declare @AddedBy integer;
set @AddedBy = 0;
select * from @TabNum
where (@AddedBy <> 0 or num >= 0)
and (@AddedBy <> 1 or num = 0)
and (@AddedBy <> 2 or num <> 0)
;