碰到一个二维表,但是从来没有写过SQL,请高手指点下
姓名 课程编号 课程 成绩
S1 C1 数据结构 91
S1 C2 操作系统 81
S1 C3 微积分 71
S2 C1 数据结构 92
S2 C2 操作系统 82
S2 C3 微积分 72
S3 C1 数据结构 93
S3 C2 操作系统 83
S3 C3 微积分 73
要转置得到如下二维表:
姓名 数据结构 操作系统 微积分
S1 91 81 71
S2 92 82 72
S3 93 83 73还有聚焦函数要怎么写?

解决方案 »

  1.   

    行转列问题
    select 姓名,
      max(decode(课程编号,'C1',成绩)数据结构,
      max(decode(课程编号,'C2',成绩)操作系统,
      max(decode(课程编号,'C3',成绩)微积分
    from table1
    group by 姓名如果需要动态,参照
    http://topic.csdn.net/u/20091019/11/67cd55a3-3f42-4db7-a3f8-91dd52a913cd.html
      

  2.   

    上面每行少了一个右括号
    select 姓名, 
      max(decode(课程编号,'C1',成绩))数据结构, 
      max(decode(课程编号,'C2',成绩))操作系统, 
      max(decode(课程编号,'C3',成绩))微积分 
    from table1 
    group by 姓名