aaa  bbb  ccc
001  10   2008-1-1
001  20   2008-1-1
001  15   2008-1-3
001  20   2008-1-3
002  30   2008-1-4
002  40   2008-1-5
003  50   2008-1-6
...  ..   ....希望得到
001  35   
002  40
003  50就是根据最后的时间对aaa做GROUP,求bbb的总和,谢谢!

解决方案 »

  1.   


    select aaa,sum(bbb)
    from a,
    (
    select aaa,max(ccc) last_ccc
    from a
    group by aaa
    ) b
    where a.ccc=b.last_ccc
    and a.aaa=b.aaa
    group by aaa
      

  2.   

    同意hebo2005,还可以用union实现,不过效率肯定低很多了
      

  3.   

    select aaa,max(bbb) 
    from (
             select aaa,sum(bbb) bbb,ccc
             from a
             group by aaa,ccc
             )
    group by aaa
      

  4.   

    楼上的,你这语句出来的是单日bbb求和后最大值
    不是最后日然后当天求后虽然在本题中,可以显示出楼主所需要的数据,不过数据一变,你的就不对了比如aaa  bbb  ccc 
         001  20   2008-1-1 
    001  20   2008-1-1 
    001  15   2008-1-3 
    001  20   2008-1-3 
          002  50   2008-1-4 
    002  40   2008-1-5 
    003  50   2008-1-6 
    ...  ..   .... 
    我只调整两行数据
    你出来的结果就是
    001  40   
    002  50 
    003  50 
      

  5.   

    哦,不好意思,看错需求了,是一组的最后时间么
    那应该是
    select aaa,bbb
    from (
             select aaa,sum(bbb) bbb, max(ccc) ccc
             from a
             group by aaa,ccc
             )
    不知道对不对,我这里没有工具验证
      

  6.   

    上个帖子验证了下,不对,可以这么写
    select x.aaa, x.bbb
    from (
             select t.aaa,sum(t.bbb) bbb,t.ccc
             from temp t,(select max(ccc) ccc from temp group by aaa) a
             where t.ccc = a.ccc
             group by t.aaa,t.ccc
             ) x