SELECT   acc_nbr, 
SUM (DECODE (acct_item_, 2005, NVL(charge,0))),
         SUM (DECODE (acct_item_, 2005, 0, NVL(charge,0)))
    FROM acct_item
GROUP BY acc_nbr

解决方案 »

  1.   

    --得出这个结果集用不上第二个表  下面的语句没有测试
    select a.acc_nbr,(case when substr(a.acct_item_,1,1)='1' then sum(a.charge) YZF else sum(a.charge) SJF END) from acct_item a group by a.acc_nbr
      

  2.   

    acct_item_字段一对多:select 
        a.acc_nbr,
        sum(decode(b.bz,'YZF',a.charge,0)) YZF,
        sum(decode(b.bz,'SJF',a.charge,0)) SJF
    from 
        table1 a,
        table2 b
    where
        a.acct_item_=b.acct_item_
    group by 
        a.acc_nbr
      

  3.   

    两位大哥,这个YZF,SJF,也是不固定的呀,它对应的acct_item_不同而不同哦!
      

  4.   

    select 
        a.acc_nbr,
        sum(decode(b.bz,'YZF',a.charge,0)) YZF,
        sum(decode(b.bz,'SJF',a.charge,0)) SJF
    from 
        acct_item a,
        item b
    where
        a.acct_item=b.acct_item
    group by 
        a.acc_nbr
      

  5.   

    因为这是电信的程序,所以
    YZF-月租费
    SJF-数据费
    XXF-信息费
    .....
    应该有几十项收费吧!
      

  6.   

    如果YZF-月租费、SJF-数据费、XXF-信息费等等是不确定而你又要统计的话,在设计时就应该考虑数据结构的合理性
    建议加一个字段用以区分统计费用类型
      

  7.   

    这要用过程实现
    你问一下电信的计费人员,他们应该有一个过程或ProC , 用来生成对应的记录集
      

  8.   

    试一试这个思路
    __第一歨 建库,
    acc_nbr ,yzf,sjf,.....
    create tabel aaa--第二歨
    将号码插入表中
    insert into  aaa set select acc_nbr from acct_item group by acc_nbr;
    __之后就是一项一项的update 了,
      

  9.   

    没办法,SQL版的邹建大哥哪个SQL可以实现,可惜是SQL SERVER的没办法呀!
    这个数据库是远端的数据库,我修改的权限都没有。只能是访问呀!
    去哪里找电信的计费人员呀!