1:
--建表:
create table tbn(num number,comps varchar2(10),   area varchar(10));
insert into tbn select 1     ,  'test'   ,  'tt'
from dual
union all select
2     ,  'test'    , 'ss'
from dual
union all select
5     ,  'test2'   , 'tt'
from dual
union all select
8     ,  'test2'    ,'ss'
from dual;--测试
select comps,max(decode(area,'tt',num,0)) as tt,
                  max(decode(area,'ss',num,0)) as ss from tbn group by comps;--结果:
COMPS              TT         SS
---------- ---------- ----------
test                1          2
test2               5          8
--如果area字段很多的话,那就得要动态的语句了。在MSSQL中很简单的

解决方案 »

  1.   

    2:
      select comps,max(decode(area,'tt',num,0)) as tt,
          max(decode(area,'ss',decode(num,2,1,num),0)) as ss from tbn group by comps;--结果:
    COMPS              TT         SS
    ---------- ---------- ----------
    test                1          1
    test2               5          8
      

  2.   

    [email protected]> r
      1  select comps,sum(decode(area,'tt',num,0)) tt,sum(decode(area,'ss',num,0)) ss
      2  from ttest
      3* group by compsCOMPS         TT         SS
    ----- ---------- ----------
    test           1          2
    test2          5          8
      

  3.   

    2:
    [email protected]> r
      1  select comps,sum(decode(area,'tt',num,0)) tt,sum(decode(area,'ss',decode(num,2,1,num),0)) ss
      2  from ttest
      3* group by compsCOMPS         TT         SS
    ----- ---------- ----------
    test           1          1
    test2          5          8
      

  4.   

    select decode(s,'2',t,s) from tb_name
    --如果s='2',则显示t
      

  5.   


    友联创新系统集成有限公司(北京上地)
    在天津招聘
    熟悉oracle 有相关工作经验 学过c语言
    工作地点:天津
    其它事项面谈
    有意象请将简历发至
    [email protected] 
    [email protected]
    联系人:王先生