高级sql请教,目前没有人解决
现在一张表,字段如下 
          	ID	ANAME	ATJ	AVALUE 
 	1	a	1	11 
 	2	b	-1	-11 
 	3	c	0	100 
 	4	d	1	111 
 如果atj=1则执行id> 1 
 如果atj=-1则执行id <3 
 如果atj=0则执行(id> 1   or   id <3) 
 下面我做的是不对的,请问高手门如何实现 
 select   case   when   atj=1   then   id> 1 
                      case   when   atj=-1   then   id <3 
                      case   when   atj=0   then   (id> 1   or   id <3) 
                      from   aaa 
------解决方案--------------------不知道,好像不行 你看用这种行吗?试试看!~~ (ATJ为表名,其他的一样)   
   select a.* 
     from ATJ a 
    where a.atj = 1 
      and a.id >  1 
   union  
     select a.* 
       from ATJ a 
    where a.atj = -1 
      and a.id  < 3 
   union 
     select a.* 
       from ATJ a 
    where a.atj = 0 
      and a.id >  1 
      and a.id  < 3;     
 结果:---------------------------------   
         ID ANAME        ATJ     AVALUE 
 ---------- ----- ---------- ---------- 
          2 b             -1        -11 
          4 d              1        111
------解决方案--------------------把判断逻辑写在程序里.    
 或在存储过程中用动态SQL出数据也会方便很多.
------解决方案--------------------SELECT * 
   FROM aaa 
  where (id> 1 or (:atj <> 1))  
    and (id <3 or (:atj <> -1)) 
    and ((id> 1 or id <3) or (:atj <> 0)) 
    --atj为参数