解决方案 »

  1.   


     
    WITH tb AS 
    (
    select 'N-126' r_code, 10   price from dual union all
    select 'N-126' r_code, 12   price from dual union all
    select 'N-126' r_code, 15   price from dual union all
    select 'N-126' r_code, 18   price from dual union all
    select 'N-126' r_code, 9    price from dual union all
    select 'N-127' r_code, 100  price from dual union all
    select 'N-127' r_code, 120  price from dual union all
    select 'N-127' r_code, 150  price from dual union all
    select 'N-127' r_code, 10   price from dual 
    )SELECT r_code,
           SUM(DECODE(s,1,price,NULL)) P1,
           SUM(DECODE(s,2,price,NULL)) P2,
           SUM(DECODE(s,3,price,NULL)) P3,
           SUM(DECODE(s,4,price,NULL)) P4,
           SUM(DECODE(s,5,price,NULL)) P5
    FROM        
    (SELECT R_CODE,
           PRICE,
           ROW_NUMBER() OVER(PARTITION BY R_CODE ORDER BY PRICE) S
      FROM TB
    )
    GROUP BY r_code