关于那个座位的题目,我想先找出按年纪升序排出的一半,再找出按年纪降序排出的一半,然后合并视图,就可以达到这个效果了。
但ROWNUM=1是返回第一条,<9是返回前九条,怎么指定ROWNUM返回总记录数量的一半呢?
谢谢

解决方案 »

  1.   

    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>
    
      

  2.   


    rownum<=(select count(*)/2 from tablename)
      

  3.   


    大哥,很感谢您。
    我刚才自己也尝试了一下,想用这样的思想得出结果:
    创建一个表列出最年长的一半,创建另一个表列出最年轻的一半,然后合并显示。
    我已经创建好了,可是求教怎么合并成一个表,横向合并。谢谢。 表A                  表B桌子左边              桌子右边 
    -----------     ------------ 
    100岁的人            5岁的人 
    90岁的人             10岁的人 
    80岁的人             20岁的人 
    60岁的人             30岁的人 
    50岁的人             40岁的人  
    现在求教怎么合并成一个表C:桌子左边    |    桌子右边 
    ----------------------- 
    100岁的人  |    5岁的人 
    90岁的人    |    10岁的人 
    80岁的人    |    20岁的人 
    60岁的人    |    30岁的人 
    50岁的人    |    40岁的人  谢谢
      

  4.   

    把左右两个记录集按a.rownum=b.rownum来联接一下就行了。