tb1  机构  帐号  金额  日期 
    001  a1    100  20090101 
    001  a2    120  20090302 
    002  a1    500  20090109 
类似上面的表,我要按照机构产生下列结果 tb2 机构  金额1(当月)  金额2(当年) 
    001  100          220  
    002  500          500 
从一行表里统计两次金额,一次按照日期like '200901%' ,一次按照日期 like '2009%s' 忘高人赐教! 

解决方案 »

  1.   

    -- =========================================
    -- -----------t_mac 小编-------------
       ---希望有天成为大虾---- 
    -- =========================================IF OBJECT_ID('tb') IS NOT NULL
      DROP TABLE tb
    GO
    CREATE TABLE tb(机构 varchar(3),账号 varchar(10),金额 int ,日期 varchar(100))
    go
    insert into tb
    select  '001','a1',100,'20090101'union all
    select  '001','a2',120,'20090302'union all
    select  '002','a1',500,'20090109'
    go
    select 机构,
     [金额1]=max(case when 日期 like '200901%' then 金额 else 0 end),
     [金额2]=SUM(金额)
     from tb 
     group by 机构
    /*------------
    001 100 220
    002 500 500
    -------*/
      

  2.   

    --如果日期是datetime类型
    -- =========================================
    -- -----------t_mac 小编-------------
       ---希望有天成为大虾---- 
    -- =========================================IF OBJECT_ID('tb') IS NOT NULL
      DROP TABLE tb
    GO
    CREATE TABLE tb(机构 varchar(3),账号 varchar(10),金额 int ,日期 datetime)--这里
    go
    insert into tb
    select  '001','a1',100,'20090101'union all
    select  '001','a2',120,'20090302'union all
    select  '002','a1',500,'20090109'
    go
    select 机构,
     [金额1]=max(case when DATEPART(month,日期)=01 then 金额 else 0 end),
     [金额2]=SUM(金额)
     from tb 
     group by 机构
    /*------------
    001 100 220
    002 500 500
    -------*/
      

  3.   

    select 机构,sum(case when 日期 like '200901%' then 金额 else 0 end) as [金额1(当月)]
     ,sum(金额) as [金额2(当年)]
    from tb1
    where 日期 like '2009%' 
    group by 机构
      

  4.   

    select 机构,sum(case when 日期 like '200901%' then 金额 else 0 end) as [金额1(当月)]
     ,sum(金额) as [金额2(当年)]
    from tb1
    where 日期 like '2009%' 
    group by 机构正解
      

  5.   

    该SQL [金额2(当年)]有结果,但是[金额1(当月)]是0,难道sum条件的问题?注:在db2上