SELECT PEOPLE,
   SUM(DECODE("TYPE",'A',AMOUNT,0)) AS A,
   SUM(DECODE("TYPE",'B',AMOUNT,0)) AS B,
   SUM(DECODE("TYPE",'C',AMOUNT,0)) AS C,
   SUM(DECODE("TYPE",'D',AMOUNT,0)) AS D
FROM T
GROUP BY PEOPLE

解决方案 »

  1.   

    13:15:24 SQL*PLUS>select * from bb;PEOPLE     TYPE                     AMOUNT
    ---------- -------------------- ----------
    ad         a                           234
    ad         b                           345
    ad         a                           234
    ch         c                            43
    ch         d                           435
    an         a                           435已选择6行。已用时间:  00: 00: 00.00
    13:15:29 SQL*PLUS>SELECT people ,SUM(decode(TYPE,'a',0,amount)) a,
    13:15:30   2  SUM(decode(TYPE,'b',0,amount)) b,
    13:15:30   3  SUM(decode(TYPE,'c',0,amount)) c,
    13:15:30   4  SUM(decode(TYPE,'d',0,amount)) d
    13:15:30   5  FROM bb GROUP BY people;PEOPLE              A          B          C          D
    ---------- ---------- ---------- ---------- ----------
    ad                345        468        813        813
    an                  0        435        435        435
    ch                478        478        435         43已用时间:  00: 00: 00.00
    13:15:31 SQL*PLUS>
      

  2.   

    SELECT 
        people,
        MAX(DECODE(type ,'A' ,amount ,0)) AS A,
        MAX(DECODE(type ,'B' ,amount ,0)) AS B,
        MAX(DECODE(type ,'C' ,amount ,0)) AS C,
        MAX(DECODE(type ,'D' ,amount ,0)) AS D
    FROM 
        tabname
    GROUP BY 
        people
      

  3.   

    上面把反了
    13:15:31 SQL*PLUS>SELECT people ,SUM(decode(TYPE,'a',amount,0)) a,
    13:18:20   2  SUM(decode(TYPE,'b',amount,0)) b,
    13:18:20   3  SUM(decode(TYPE,'c',amount,0)) c,
    13:18:20   4  SUM(decode(TYPE,'d',amount,0)) d
    13:18:20   5  FROM bb GROUP BY people;PEOPLE              A          B          C          D
    ---------- ---------- ---------- ---------- ----------
    ad                468        345          0          0
    an                435          0          0          0
    ch                  0          0         43        435已用时间:  00: 00: 00.00
    13:18:21 SQL*PLUS>
      

  4.   

    select people,
           sum(decode(type,'A',amount,0)) A,
           sum(decode(type,'B',amount,0)) B,
           sum(decode(type,'C',amount,0)) C,
           sum(decode(type,'D',amount,0)) D
    from tbl
    group by people;
      

  5.   

    select people,
           max(decode(type, 'A', amount, 0)) A,
           max(decode(type, 'B', amount, 0)) B,
           max(decode(type, 'C', amount, 0)) C,
           max(decode(type, 'D', amount, 0)) D
      from tablename
     group by people