最近开发一个项目,遇到以下问题,需将表由纵变横显示,表结构如下:字段1    字段2     字段3
A         aa       a1
A         bb       b1
A         cc       c1
B         aa       a2
B         bb       b2
B         cc       c2请用SQL语句将表查询出来变为如下格式
字段: 字段1   aa     bb    cc
记录:  A      a1     b1    c1
       B      a2     b2    c2我以请教了很多高手,都没有办法,有的说用存储过程,但在做项目中时常预到类似问题,不想用过程来实现,还请给位大师赐教,谢谢!

解决方案 »

  1.   

    select 字段1,
           (select 字段3 from 表 where 字段1 = b.字段1 and 字段2 = 'aa') aa,
           (select 字段3 from 表 where 字段1 = b.字段1 and 字段2 = 'bb') bb,
           (select 字段3 from 表 where 字段1 = b.字段1 and 字段2 = 'cc') cc
      from 表 b
     group by b.字段1
      

  2.   

    固定字段的话,可以用decode或者CASE when
      

  3.   

    SQL> ed
    已写入 file afiedt.buf  1  select c1,max(aa) aa,max(bb) bb,max(cc) cc
      2  from
      3  (
      4  select c1,decode(c2,'aa',c3,'') aa,
      5            decode(c2,'bb',c3,'') bb,
      6            decode(c2,'cc',c3,'') cc
      7  from test_04
      8  )
      9* group by c1
    SQL> /C1 AA         BB         CC
    -- ---------- ---------- ----------
    A  a1         b1         c1
    B  a2         b2         c2