就是按order by ADDRESS,Amount desc ,
然后取前两条记录,后面的用others 代替,汇总金额成第三条记录,
也就是说不管原始记录有多少条,我只能取金额最高的两条和其它的汇总成一条记录,DRDL01变为others 即可例如记录为:
  ADDRESS_NUMBER CUSTOMER DRDL01 IMSRP1 BEFORETWOYEAR
1 10003051 ALPHA START LIMITED POLY COVERED CORE PC 1425501.63
2 10003051 ALPHA START LIMITED SPUN POLYESTER SP 404370.41
3 10003051 ALPHA START LIMITED TRILOBAL AIR ENTANGLED POLY TL 9700
4 10003051 ALPHA START LIMITED SAK COTTON CS 38.3
5 10003051 ALPHA START LIMITED FILAMENT POLYESTER FP 3960
6 10003051 ALPHA START LIMITED COTTON COVERED CORE CC 3715.84
7 10000373 AMANN ASIA LIMITED POLY COVERED CORE PC 5246563.21
8 10000373 AMANN ASIA LIMITED TEXTURED POLYESTER TP 693569.06
9 10000373 AMANN ASIA LIMITED SPUN POLYESTER SP 39873.6结果为下面才是对的:
1 10003051 ALPHA START LIMITED POLY COVERED CORE PC 1425501.63
2 10003051 ALPHA START LIMITED SPUN POLYESTER SP 404370.41
3 10003051 ALPHA START LIMITED Others Others 17414.14
4 10000373 AMANN ASIA LIMITED POLY COVERED CORE PC 5246563.21
5 10000373 AMANN ASIA LIMITED TEXTURED POLYESTER TP 693569.06
6 10000373 AMANN ASIA LIMITED Others Others 39873.6

解决方案 »

  1.   

    字段没对应上
    ADDRESS_NUMBER CUSTOMER DRDL01 IMSRP1 BEFORETWOYEAR 
    5列,下面值有9列
    按哪几列分组,按金额排序取最高两条记录
    order by ADDRESS,Amount desc 这又是什么意思
    可以的话给出表结构测试数据,说明下
      

  2.   

    表结构及数据如下:
    ADDRESS CUSTOMER DRDL01 IMSRP1 Amount
    1 10003051 ALPHA START LIMITED POLY COVERED CORE PC 1425501.63
    2 10003051 ALPHA START LIMITED SPUN POLYESTER SP 404370.41
    3 10003051 ALPHA START LIMITED TRILOBAL AIR ENTANGLED POLY TL 9700
    4 10003051 ALPHA START LIMITED SAK COTTON CS 38.3
    5 10003051 ALPHA START LIMITED FILAMENT POLYESTER FP 3960
    6 10003051 ALPHA START LIMITED COTTON COVERED CORE CC 3715.84
    7 10000373 AMANN ASIA LIMITED POLY COVERED CORE PC 5246563.21
    8 10000373 AMANN ASIA LIMITED TEXTURED POLYESTER TP 693569.06
    9 10000373 AMANN ASIA LIMITED SPUN POLYESTER SP 39873.6结果为下面才是对的:
    1 10003051 ALPHA START LIMITED POLY COVERED CORE PC 1425501.63
    2 10003051 ALPHA START LIMITED SPUN POLYESTER SP 404370.41
    3 10003051 ALPHA START LIMITED Others Others 17414.14
    4 10000373 AMANN ASIA LIMITED POLY COVERED CORE PC 5246563.21
    5 10000373 AMANN ASIA LIMITED TEXTURED POLYESTER TP 693569.06
    6 10000373 AMANN ASIA LIMITED Others Others 39873.6
      

  3.   

    CREATE TABLE test3(
    address VARCHAR2(20),
    customer VARCHAR2(30),
    drdl01 VARCHAR2(10),
    imsrp1 VARCHAR2(10),
    amount NUMBER(18,2) );INSERT INTO test3(address,customer,drdl01,imsrp1,amount) VALUES('10003051', 'ALPHA','POLY COVERED CORE','PC', 1425501.63);
    INSERT INTO test3(address,customer,drdl01,imsrp1,amount) VALUES('10003051', 'ALPHA','SPUN POLYESTER ','SP', 404370.41);
    INSERT INTO test3(address,customer,drdl01,imsrp1,amount) VALUES('10003051', 'ALPHA','TRILOBAL AIR ENTANGLEd','TL', 9700);
    INSERT INTO test3(address,customer,drdl01,imsrp1,amount) VALUES('10003051', 'ALPHA','SAK COTTON ','CS', 38.3);
    INSERT INTO test3(address,customer,drdl01,imsrp1,amount) VALUES('10003051', 'ALPHA','FILAMENT POLYESTER ','FP', 3960);
    INSERT INTO test3(address,customer,drdl01,imsrp1,amount) VALUES('10003051', 'ALPHA', 'COTTON COVERED CORE ','CC', 3715.84);INSERT INTO test3(address,customer,drdl01,imsrp1,amount) VALUES('10000373', 'AMANN', 'POLY COVERED CORE','PC', 5246563.21);
    INSERT INTO test3(address,customer,drdl01,imsrp1,amount) VALUES('10000373', 'AMANN', 'TEXTURED POLYESTER','TP', 693569.06);
    INSERT INTO test3(address,customer,drdl01,imsrp1,amount) VALUES('10000373', 'AMANN', 'SPUN POLYESTER','SP', 39873.6);COMMIT;
      

  4.   


    --用个老土方法
    with temp as 
    (select t.*,dense_rank()over(partition by t.address,t.customer order by t.amount)  rn from test3 t)
    select t.address,t.customer,sum(t.amount) as amount 
    from temp t
    where t.rn>=3
    group by t.address,t.customer
    union all
    select t.address,t.customer,t.amount as amount 
    from temp t
    where t.rn<3ADDRESS CUSTOMER AMOUNT
    10000373 AMANN 5246563.21
    10003051 ALPHA 1843532.04
    10000373 AMANN 39873.6
    10000373 AMANN 693569.06
    10003051 ALPHA 38.3
    10003051 ALPHA 3715.84
      

  5.   

    order by t.amount加个DESC,呵呵