日期:2014-05-17  浏览次数:20493 次

两种条件过滤合并到一个语句


select a from tab where num = 0


select b from tab where num <> 0

合并到一个语句

------解决方案--------------------


SELECT (CASE WHEN Num = 0 THEN A ELSE NULL END) AS A, 
   (CASE WHEN Num <> 0 THEN B ELSE NULL END) AS B
FROM Tab




??没太明白 , 这样?
------解决方案--------------------
引用:
select a from tab where num = 0


select b from tab where num <> 0

合并到一个语句


你是想合并后,还是1列对吧,是这样吗:

--drop table tab

create table tab(a int,b int,num int)

insert into tab
select 1,2,100 union all
select 3,4,0


--注意字段a和字段b,是同一种数据类型
select case when num = 0
                 then a
            when num <> 0
                 then b
            else null
       end as xx
from tab
/*
xx
2
3
*/

------解决方案--------------------
SELECT (CASE WHEN Num = 0 THEN A ELSE NULL END) AS A,     (CASE WHEN Num <> 0 THEN B ELSE NULL END) AS B FROM Tab 
------解决方案--------------------
SELECT *
FROM (select a from tab where num = 0
UNION ALL 
select b from tab where num <> 0)a
 
------解决方案--------------------

select case when num = 0
                 then a
            when num <> 0
                 then b
       end as C
from tab

------解决方案--------------------
select a, b from tab where ( num = 0 or num <> 0 )
------解决方案--------------------
搞错了。。。。。