一桌人在长桌上吃饭,分成两排,最年长的人和最年轻的人面对面,次年长的人和次年轻的人面对面,以此类推。 
希望的输入是 桌子左边    |    桌子右边 
----------------------- 
100岁的人  |    5岁的人 
90岁的人    |    10岁的人 
80岁的人    |    20岁的人 
60岁的人    |    30岁的人 
50岁的人    |    40岁的人  人的姓名和生日都可以,求这样的排序配对显示。 
老师提醒可以用临时表和ROWNUM。 
谢谢!!!!!!

解决方案 »

  1.   

    select a.col 左边,b.col 右边
    from (select col,rownum rn from table order by col desc) a,(select col,rownum rn from table order by col) b
    where a.rn=b.rn
      

  2.   

    select a.col 左边,b.col 右边 
    from (select col,rownum rn from table order by col desc) a left join (select col,rownum rn from table order by col) b 
    on a.rn=b.rn 
    where a.rn<=(select ceil(count(1)/2) from table)
      

  3.   

    刚刚我做了测试,是不是a.rn=b.rn的两个值一样啊?因为即使排序了,rownum还是一样的。是不是还要把其中一个总数减去行数,但我代码不会写,呵呵。
      

  4.   

    作业题啊 SQL> create table guests(
      2     id      int primary key,
      3     gname   varchar(20),
      4     gage    int
      5  );Table created.SQL>
    SQL> select * from guests;        ID GNAME                      GAGE
    ---------- -------------------- ----------
             1 A60                          60
             2 A70                          70
             3 A30                          30
             4 A90                          90
             5 A50                          50
             6 A10                          10
             7 A40                          40
             8 A80                          80
             9 A20                          20
            10 A100                        10010 rows selected.SQL> select a.GNAME,a.GAGE,b.GNAME,b.GAGE
      2  from (
      3  select rownum as sno, id,GNAME,GAGE from
      4  (select ID,GNAME,GAGE from guests order by GAGE desc ,ID desc)
      5  ) a
      6  ,
      7  (
      8  select rownum as sno, id,GNAME,GAGE from
      9  (select ID,GNAME,GAGE from guests order by GAGE ,ID )
     10  ) b
     11  where a.sno=b.sno
     12  and a.GAGE>b.GAGE or (a.GAGE=b.GAGE and a.id>b.id);GNAME                      GAGE GNAME                      GAGE
    -------------------- ---------- -------------------- ----------
    A100                        100 A10                          10
    A90                          90 A20                          20
    A80                          80 A30                          30
    A70                          70 A40                          40
    A60                          60 A50                          50SQL>
      

  5.   

    以前记得回复过同样的题目,临时表用不着的,写SQL就能写出来,没仔细看楼上的,应该差不多的