写错了一个地方算法是这样的:
select a.公司名,sum(a.数量1),sum(a.金额1) group by a.公司名   得出一张表
select b.公司名,sum(b.数量2),sum(b.金额2) group by b.公司名   得出另一张表

解决方案 »

  1.   

    不知道兄弟是用什么前端开发工具,如果是PB的话可以用freeform形式的格式,就可以轻松搞定了
      

  2.   

    這不是很簡單的嗎?用下面語句就可以了:select NVL(t1.公司名,t2.公司名),NVL(数量1,0),NVL(金额1,0),NVL(数量2,0),NVL(金额2,0)
    FROM 
    (select 公司名,sum(数量1) 数量1,sum(金额1) 金额1 FROM A group by 公司名) t1
    FULL JOIN --注意:Oracle9i以下版本不支持全外連接
    (select 公司名,sum(数量2) 数量2,sum(金额2) 金额2 FROM B group by 公司名) t2
    ON t1.公司名=t2.公司名;
      

  3.   

    A表公司名    数量1    金额1
    海尔       2        5
    海尔       5       19
    小天鹅     6       12B表公司名    数量2    金额2
    海尔       3        7
    海尔       5       19
    小天鹅     6       12
    小天鹅     1        1
    安吉尔     2       10==================================
    现在要出这样一个报表公司名    数量1    金额1    数量2    金额2    
    海尔       7        24        8        25
    小天鹅     6       12         7        13
    安吉尔     0        0         2        10
    select AA.公司名,数量1,金额1,数量2,金额2 from (select 公司名,sum(数量1) as 数量1,sum(金额1) as 金额1 from A group by 公司名) AA,(select 公司名,sum(数量2) as 数量2,sum(金额2) as 金额2 from A group by 公司名) BBwhere BB.公司名=aa.公司名
      

  4.   

    select AA.公司名,nvl(数量1,0),nvl(金额1,0),nvl(数量2,0),nvl(金额2,0) from (select 公司名,sum(数量1) as 数量1,sum(金额1) as 金额1 from A group by 公司名) AA,(select 公司名,sum(数量2) as 数量2,sum(金额2) as 金额2 from A group by 公司名) BBwhere BB.公司名=AA.公司名(+) and AA.公司名 is null  or 
    AA.公司名=BB.公司名(+) and BB.公司名 is null
      

  5.   

    樓上的語句太搞笑了:
    BB.公司名=AA.公司名(+) and AA.公司名 is null  or 
    AA.公司名=BB.公司名(+) and BB.公司名 is null很明顯,這個條件隻能得到通過BB.公司名=AA.公司名(+)進行右連接後,AA表中不存在的記錄行(AA.公司名 is null)或者通過AA.公司名=BB.公司名(+) 進行右連接後,BB表中不存在的記錄行(BB.公司名 is null),那些在兩表中都存在的公司名的行都會被去掉,而且結果中的公司名列是空值。對於樓主給出的那些數據,通過樓上的代碼隻能得到下面一行數據:
    公司名    數量1    金額1    數量2    金額2
              0       0        2        10如果不信,可以按樓主給出的表結構及數據用樓上的語句測試一下。
      

  6.   

    zjp8310(z一阵风z)的方法很好啊