取出表中RQ字段每年每月的最后一天的数据

解决方案 »

  1.   

    SELECT a.*
      FROM tab a,
           (SELECT DISTINCT ADD_MONTHS (MIN (TO_DATE (TO_CHAR (rq, 'yyyymm'),
                                                      'yyyymm'
                                                     )
                                            ),
                                        ROWNUM - 1
                                       ) rq
                       FROM tab) b
     WHERE TRUNC (rq) = b.rq
      

  2.   

    搂住的意思有歧义,
    其一,按最后一次修改数据的日期
          select RQ from tablename t,
                         (select max(datename) from tablename group by
                           to_char(dataneme,'yyyy/mm')) tname
          where t.datename = tname.datename;
    其二,按某一月的固有的最后一天(比如说闰年的二月为28)
           select rq from tablename where datename = last_day(datename);
      

  3.   

    我感觉楼主的意思是取"每年每月"中最小的.那个值.例如..数据库中20060720.是200607月最小的rq值.就取出.20060720这天的数据...以此类推...20060628...是200606月份最小的一天..创建表...aaa
    create table AAA
    (
      RQ DATE,
      AA VARCHAR2(3)
    )插入数据
    insert into AAA (RQ, AA)
    values (to_date('13-07-2006', 'dd-mm-yyyy'), '111');
    insert into AAA (RQ, AA)
    values (to_date('19-07-2006', 'dd-mm-yyyy'), 'ddd');
    insert into AAA (RQ, AA)
    values (to_date('18-07-2006', 'dd-mm-yyyy'), '222');
    insert into AAA (RQ, AA)
    values (to_date('22-06-2006', 'dd-mm-yyyy'), 'ddd');
    insert into AAA (RQ, AA)
    values (to_date('17-07-2006', 'dd-mm-yyyy'), '211');
    insert into AAA (RQ, AA)
    values (to_date('17-07-2006', 'dd-mm-yyyy'), 'ddd');
    commit;........语句
     SELECT a.*
      FROM aaa a,
           (select max(rq) aa, to_char(rq,'yyyymm') 
             from aaa 
             group by to_char(rq,'yyyymm') ) 
             b
     WHERE a.rq=b.aa结果:::::RQ          AA
    ----------- ---
    2006-6-22   ddd
    2006-7-19   ddd