当前位置:首页 > 技术问答集
firefox

怎样写一个这样的 SQL 语句呀 ? !

 所属目录:Java   |   类型:技术问答   |   时间:2007-05-21
 问题:

我要在一张表中,有字段   name     amount     typeid       prjid  
  另一张表中,有字段     intyear     prjid  
  我要从中统计同时得到       sum(amount   )   group   by   intyear      
                                                sum(amount   )   typeid   =   55     group   by   intyear     怎样在sql中实现呀??

· 网友精彩回答:

发表者:libin_ftsafe

select    
          b.intyear,  
          sum(a.amount),  
          sum(case   a.typeid   when   55   then   a.amount   else   0   end)  
  from  
          a,b  
  where  
          a.prjid   =   b.prjid  
  group   by  
          b.intyear

发表者:zhangyang555

select   b.intyear,sum(a.amount),sum(case   when   a.typeid=55   then   a.amount   else   0   end)   from  
  a,b   where   a.prjid   =   b.prjid   group   by   b.intyear

发表者:xxljd

select   intyear,sum(amoutnt)   from   (select   a.*,b.*      
  from   a   left   outer   join   b     on   a.prjid=b.prjid)aa    
  group   by   intyear  
   
   
  select   intyear,sum(amoutnt)   from   (select   a.*,b.*      
  from   a   left   outer   join   b     on   a.prjid=b.prjid)aa    
  where   typeid=55  
  group   by   intyear

发表者:samfeng_2003

select   a.intyear,sum(b.amount   )  
  from   表1   a,表2   b  
  where   a.prjid=b.prjid   and   a.typeid   =   55  
  group   by   a.intyear

发表者:samfeng_2003

select   a.intyear,sum(b.amount   )  
  from   表1   a,表2   b  
  where   a.prjid=b.prjid   and   a.typeid   =   55  
  group   by   a.intyear  
  union  
  select   a.intyear,sum(b.amount   )  
  from   表1   a,表2   b  
  where   a.prjid=b.prjid  
  group   by   a.intyear  
 

发表者:danisluo

借用   libin_ftsafe(子陌红尘)  
  select    
          b.intyear,  
          sum(a.amount),  
          sum(case   a.typeid   when   55   then   a.amount   else   0   end)  
  from  
          a,b  
  where  
          a.prjid   =   b.prjid  
  group   by  
          b.intyear

发表者:zlp321002

sql   server   2000是支持case   的!

.
© 2006-2008 All Rights Reserved