?
select A.编号,A.姓名,A.帐号,NVL(SUM(B.金额),0) WHERE B.编号=A.编号
group by A.编号,A.姓名,A.帐号

解决方案 »

  1.   

    楼上的SQL只能查出B表中存在的编号,而B表中没有的编号则没有记录!
      

  2.   

    select A.编号,A.姓名,A.帐号,NVL(SUM(B.金额),0) WHERE A.编号=B.编号(+)
    group by A.编号,A.姓名,A.帐号
      

  3.   

    谢谢各位,已经搞定了!
    select A.编号,A.姓名,A.帐号,NVL(SUM(B.金额),0)
    from A as aa LEFT JOIN B as bb on aa.编号=bb.编号
    group by A.编号,A.姓名,A.帐号不知道和楼上的那句A.编号=B.编号(+)是不是一样!
      

  4.   

    还有一问,如果表B中还有一个字段B.日期,
    select A.编号,A.姓名,A.帐号,NVL(SUM(B.金额),0)
    from A as aa LEFT JOIN B as bb on aa.编号=bb.编号
    where bb.日期>=TO_DATE('20030101','YYYYMMDD')
    AND bb.日期<=TO_DATE('20030201','YYYYMMDD') 
    group by A.编号,A.姓名,A.帐号得出的结果也不是所有表A的编号,只有一部分,怎么解决!
      

  5.   

    把对b表的筛选条件,放到子查询里。
    select A.编号,A.姓名,A.帐号,NVL(SUM(B.金额),0)
    from A aa,
       (select * 
        from B bb
        where bb.日期>=TO_DATE('20030101','YYYYMMDD') AND bb.日期<=TO_DATE ('20030201','YYYYMMDD') 
        ) bb 
    where aa.编号=bb.编号(+)
    group by A.编号,A.姓名,A.帐号
      

  6.   

    已解决!SELECT A.编号,A.姓名,A.帐号,
    (select NVL(SUM(B.金额),0) from b where A.编号=B.编号 
     and B.日期>=TO_DATE('20030101','YYYYMMDD')
     AND B.日期<=TO_DATE('20030201','YYYYMMDD'))
    FROM A