有如下数据表:
编码  名称  
1     a
1     b
2     c
3     a
3     b
3     e
...最后查询结果格式以下:
编码  名称1  名称2  名称3
1     a      b
2     c
3     a      b      e说明:
“编码”列,同一数字最多会出现三行,所以结果列为名称固定为"名称1","名2","名称3"。
“名称”列数据是任意字符(重复或不重复的)。请问仅用sql能实现吗? 不知oracle是否自带这种函数?

解决方案 »

  1.   


    select  names, sum(decode(course,'语文', grade,null)) "语文", 
                   sum(decode(course,'数学', grade,null)) "数学", 
                   sum(decode(course,'英语', grade,null)) "英语" 
    from tmp
    group by names类似上面的写法。
      

  2.   

    select a.编号,a.名称,b.名称,c.名称 from table1 as a
    inner join table1 as b on a.编号=b.编号
    inner join table1 as c on c.编号=a.编号
    where a.编号=b.编号 and a.编号=b.编号