这该不简单吗!SELECT 操作员代码, 
       操作员姓名,
       a.事件代码 事件代码,
       事件名称,
       a.a1 发生次数,
       a.a2 发生额 
  FROM 
 (SELECT 操作员代码, 操作员姓名,事件代码,sign(发生额),SUM(发生次数) a1 ,SUM(发生额) a2
    FROM MyTable
   GROUP BY 操作员代码, 操作员姓名,事件代码,sign(发生额)) a,
  Trcd b
 WHERE a.事件代码=b.事件代码;

解决方案 »

  1.   

    select min(操作员代码),操作员姓名,事件代码,min(select 事件名称 from trcd t where t.事件代码 = m.事件代码),sum(发生次数),sum(发生额) 
    from mytable m group by 操作员姓名,事件代码,sign(发生额)
      

  2.   

    用外连接:
    select  min(操作员代码),操作员姓名,事件代码,min(事件名称),sum(发生次数),sum(发生额)
    from  mytable,trcd where mytable.事件代码 = trcd.事件代码(+) group  by  操作员姓名,事件代码;
      

  3.   

    SQL> select * from taa;NAME              ID     TIMES       NUM
    ---------- --------- --------- ---------
    a                  1        11       111
    a                  1        22       222
    b                  2        33       333
    b                  2        44       333
    SQL> select * from tbb;       ID IDNAME
    --------- ----------
            1 name1
            2 name2
    SQL> SELECT  min(name),sum(times),sum(num),min(idname) FROM taa,tbb
      2  where taa.id=tbb.id(+)
      3  group by name,taa.id;MIN(NAME)  SUM(TIMES)  SUM(NUM) MIN(IDNAME
    ---------- ---------- --------- ----------
    a                  33       333 name1
    b                  77       666 name2随便建了两个表测试
      

  4.   

    to: cyberflying(雁南飞) 
    你的代码和hrb_qiuyb(大森林)的代码我都试了,完全可以
    我还想问一下,你用min函数是不是就是为了不让“操作员代码”字段出现在group by中?还有其他作用吗?
      

  5.   

    select  min(操作员代码),操作员姓名,事件代码,事件名称,sum(发生次数),sum(发生额)
    from  mytable,trcd where mytable.事件代码 = trcd.事件代码(+) group  by  操作员姓名,事件代码,事件名称这样才对,事件名称也许要group by
    操作员代码  操作员姓名  事件代码  事件名称  发生次数  发生额
    001         张三        61        补助      7         110
    001         张三        61        扣款      10        -130
    相同的操作员代码,事件代码不同的事件名称。
      

  6.   

    抱歉,错了一点。select  操作员代码,操作员姓名,事件代码,事件名称,sum(发生次数),sum(发生额)
    from  mytable,trcd where mytable.事件代码 = trcd.事件代码(+) group  by  操作员代码,操作员姓名,事件代码,事件名称
      

  7.   

    upselect  操作员代码,操作员姓名,事件代码,事件名称,sum(发生次数),sum(发生额)
    from  mytable,trcd where mytable.事件代码 = trcd.事件代码 group  by  操作员代码,操作员姓名,事件代码,事件名称
      

  8.   

    to 楼主:
    对的,这两个MIN主要对应group by的限制的。
    对于min(操作员代码),你可以不用min,而直接放到group by 后面。至于放到group by 后面好还是用min()好,我也不太清楚,还请知道兄弟们解释一下;
    但是min(select 事件名称 from trcd t where t.事件代码 = m.事件代码)就必须用了,因为group by后面不能用子查询的