oracle数据库实现行转列和列转行的Sql语句

oracle数据库实现行转列和列转行的Sql语句,知道的不知道的,大家一块来重温一下吧!

列转行

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)  
   
   select   name,  
  sum(decode(km,'语文',CJ,0))   语文   ,  
  sum(decode(km,'数学',cj,0))   数学,  
  sum(decode(km,'英语',cj,0))   英语  
  from   test1  
  group   by   name
   
  姓名       语文       数学       英语  
  张三       80           86           75  
  李四       78           85           78  


行转列

select 姓名, decode(rn, 1, 语文, 2, 数学, 3,英语)
    from test1   , (select level rn from dual connect by 1=1 and level <=3)

你可能感兴趣的:(oracle,数据库,sql)