现在我能从5个表中查询到的结果如下比如ID   NAME   VALUE
1    a      10
1    b      20
1    c      30
2    b      25
2    d      40我需要的结果是
ID a   b   c   d   
1  10  20  30  
2      25      40
id, name ,value都不是一张表的,而且不知道name有多少种,也不知道会查出多少数据不知道有没有高手赐教

解决方案 »

  1.   

    http://blog.csdn.net/you_tube/archive/2009/04/10/4059251.aspx
    参考下上面的,对于不固定的比较繁琐
      

  2.   

    参考下
    http://topic.csdn.net/u/20091019/11/67cd55a3-3f42-4db7-a3f8-91dd52a913cd.html
    编译过程后,执行
    proc('hzl','id','name','value');select * from v_tmp查看结果
      

  3.   

    上面的'hzl'是随便写的,用你的表名替换掉
      

  4.   

    对你现在的那个结果集做处理,假设你将这个结果集取个别名rs,像你这个问题,采用decode函数,
    select id,max(decode(name,'a',name,'')) a,max(decode(name,'b',name,'')) b,max(decode(name,'c',name,'')) c,max(decode(name,'d',name,'')) d from rs;另外,你说的name不知道有多少,我介意你用Oracle的分析函数去实现,最好做个rank好处理些。
      

  5.   

    http://www.cnblogs.com/gkl0818/archive/2009/02/25/1398078.html
    这个对你有帮助的
      

  6.   

    SQL> select * from t1;        ID NAME            VALUE
    ---------- ---------- ----------
             1 a                  10
             1 b                  20
             1 c                  30
             2 b                  25
             2 d                  40SQL> select id,
      2  max(decode(name,'a',value)) a,
      3  max(decode(name,'b',value)) b,
      4  max(decode(name,'c',value)) c,
      5  max(decode(name,'d',value)) d
      6  from t1
      7  group by id;        ID          A          B          C          D
    ---------- ---------- ---------- ---------- ----------
             1         10         20         30
             2                    25                    40
      

  7.   

    不过鉴于这里你NAME列的值不确定
    那么可以参照#2的兄弟给出的链接  http://topic.csdn.net/u/20091019/11/67cd55a3-3f42-4db7-a3f8-91dd52a913cd.html总结的挺好的~
      

  8.   

    select id "ID",sum(decode(name,'a',null))"a",
              sum(decode(name,'b',null))"b",
              (decode(name,'c',null))"c",
              (decode(name,'d',null))"a"
     from table_name
     group by id
      

  9.   


      上述的都是固定的Name (a,b,c,d), 如果 Name 不固定,需要取得所有的Name (Distinct) 做循环,
    拼写动态的SQL ,比较麻烦,大致思路如下:
    for i in 1..Name列数 loop  
      sql := sql || 'MAX(decode(t1.SEQ,' || i || ',ID)) ID_' || i || ',';
     在子查询中取得SEQ
     sql:= sql || '  SELECT  DENSE_RANK() OVER(ORDER BY Name ASC) SEQ, e.*  ';