Create   table   test   (name   char(10),km   char(10),cj   int)  
   
  insert   test   values('张三','语文',80)  
  insert   test   values('张三','数学',86)  
  insert   test   values('张三','英语',75)  
  insert   test   values('李四','语文',78)  
  insert   test   values('李四','数学',85)  
  insert   test   values('李四','英语',78)  
   
  想变成  
   
  姓名       语文       数学       英语  
  张三       80           86           75  
  李四       78           85           78  
  其中KM列数不定,也就说课目是动态变化的  
Create   table   test1   (name   VARCHAR2(100),km   VARCHAR2(100),cj   int);  
   
  insert   into   test1(name,   km,cj)   values('张三','语文',80);  
  insert   into   test1   values('张三','数学',86);  
  insert   into     test1   values('张三','英语',75);  
  insert   into   test1   values('李四','语文',78);  
  insert   into   test1   values('李四','数学',85);  
  insert   into   test1   values('李四','英语',78);  
   
   
  select   name,  
  sum(decode(km,'语文',CJ,0))   语文   ,  
  sum(decode(km,'数学',cj,0))   数学,  
  sum(decode(km,'英语',cj,0))   英语  
  from   test1  
  group   by   name