我是要实现这样一个排序,假设有a,b两个家庭,a家有两个小孩一个是20080110日出生,一个是20100510出生,b家有一个孩子是20080210出生,这个例子扩大后是好多的人口。我现在查询出来一些信息的时候大的排序是按子女出生日期排序。但是这样有个问题就是会把a家两个小孩显示的分开了了。怎么样排序,大的方向还是按照子女出生日期排序,但是还要保证同一个家庭的小孩挨着显示出来。

解决方案 »

  1.   

    drop table jax_3;create table jax_3(
    f1 varchar2(20),
    f2 date
    );insert into jax_3
    select 'a',to_date('20100510','YYYYMMDD') from dual
    union all
    select 'a',to_date('20080805','YYYYMMDD') from dual
    union all
    select 'b',to_date('20090105','YYYYMMDD') from dualcommit;
    select * from jax_3
    order by f2;
    select f1,f2
    from (
    select f1,f2,min(f2) over(partition by f1) f3
     from jax_3
     ) 
     order by f3,f1,f2
      

  2.   

    group by 家庭
    order by 出生日期?
      

  3.   

    select * from table_name order by homeid,birthday --先按照家庭编号(homeid)排序,然后按照出生日期(birthday)排序
      

  4.   

    order by 家庭,出生日期 desc
      

  5.   

    给楼主一个例子吧,从emp表中先按照部门排序,然后按照工资排序select * from emp order by deptno,sal;EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM     DEPTNO
    ----- ---------- --------- ---------- ---------- ---------- ---------- ----------
     7934 MILLER     CLERK           7782 23-1月 -82       1300                    10
     7782 CLARK      MANAGER         7839 09-6月 -81       2450                    10
     7839 KING       PRESIDENT            17-11月-81       5000                    10
     7369 SMITH      CLERK           7902 17-12月-80        800                    20
     7876 ADAMS      CLERK           7788 23-5月 -87       1100                    20
     7566 JONES      MANAGER         7839 02-4月 -81       2975                    20
     7788 SCOTT      ANALYST         7566 19-4月 -87       3000                    20
     7902 FORD       ANALYST         7566 03-12月-81       3000                    20
     7900 JAMES      CLERK           7698 03-12月-81        950                    30
     7521 WARD       SALESMAN        7698 22-2月 -81       1250        500         30
     7654 MARTIN     SALESMAN        7698 28-9月 -81       1250       1400         30
     7844 TURNER     SALESMAN        7698 08-9月 -81       1500          0         30
     7499 ALLEN      SALESMAN        7698 20-2月 -81       1600        300         30
     7698 BLAKE      MANAGER         7839 01-5月 -81       2850                    30
      

  6.   


    insert into jax_3
    select 'a',to_date('20100510','YYYYMMDD') from dual
    union all
    select 'a',to_date('20080805','YYYYMMDD') from dual
    union all
    select 'b',to_date('20090105','YYYYMMDD') from dualcommit;
    select * from jax_3
    order by f2;
    select f1,f2
    from (
    select f1,f2,min(f2) over(partition by f1) f3
     from jax_3
     )  
     order by f3,f1,f2
    2楼实现按照第一个孩子的出生时间排序select f1,f2
    from (
    select f1,f2,max(f2) over(partition by f1) f3
     from jax_3
     )  
     order by f3,f1,f2
    按照最后一个孩子的出生时间排序