1.写一个function找次部门中入职时间倒数第2的人??表名employee 字段名入职时间hire-date
2.显示为 student coures grade
student1 语文 80
student1 英语 90
student1 数学 95
student2 语文 87
student2 英语 96
student2 数学 98
student3 语文 85
student3 英语 96
student3 数学 95
用pl/sql刚成显示为
student 数学 语文 英语
student1 95 80 90
student2 98 87 96
student3 95 85 96

解决方案 »

  1.   

    1. select name from employee where hire-date=(select max(hire-date) from employee where hire-date<(select max(hire-date) from employee))
    2.select student,
    sum(decode(coures,'数学',grade,0)) 数学,
    sum(decode(coures,'语文',grade,0)) 语文,
    sum(decode(coures,'英语',grade,0)) 英语
    from tablename 
    group by student
      

  2.   

    1、
    select x.*
    from employee x,
     (
      select max(hire-date) as n2_hire-date
      from
       ((select a.*  from employee )
        union 
       (select a.*  from employee  a,(select max(hire-date) from employee) b
        where a.hire-date=b.hire-date))
     ) y
     where x.hire-date=y.n2_hire-date2、select student,
        sum(数学) as 数学,
        sum(语文) as 语文,
        sum(英语) as 英语
     from
       (select student,
        decode(coures,'数学',grade,0) 数学,
        decode(coures,'语文',grade,0) 语文,
        decode(coures,'英语',grade,0) 英语
       from tablename 
       group by student)
      

  3.   

    1.select t1.* 
    from (select t.*,row_number()over(order by t.hire-date desc) as num
      from employee t) t1
    where t1.num=2
      

  4.   

    2.select student,
        decode(coures,'数学',grade,0) 数学,
        decode(coures,'语文',grade,0) 语文,
        decode(coures,'英语',grade,0) 英语
       from tablename 
       group by student