hoocy35
2009-04-23 17:51
浏览 275
已采纳

Oracle查询的问题

请教:
一个数据库的问题,
每个月都会有峰值,具体到某一天,从数据库查询出来后 ,
例如20090305 代表 2009年3月峰值是5号这一天 然后我就可以利用这个值进行下一步操作

可是 有时候某个月 会出现 好几天数据一样的情况
比如我查数据库

返回结果

20090228
20090305
20090414
20090508
20090601
20090602

20090603 //这里六月出现了3次,因为1,2,3号值一样的,但是我只需要第一天的20090601就可以

我也只希望查询时候出现一个月只出现一个记录 而不是所有值都列出来

希望结果

20090228
20090305
20090414
20090508

20090601 //每个月只有一条记录 多余的记录不会出现

注意:数据都是由时间格式 tochar 转换而来。。。。

请问高手
SQL查询语句该怎么写 谢谢

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • johnhan2012 2009-04-23 23:31
    已采纳

    表tempTable, 字段qty,fdate ,数据如下:
    insert into tempTable(qty,fdate) values (5,to_date('2009-01-02','yyyy--mm-dd'));
    insert into tempTable(qty,fdate) values (6,to_date('2009-01-03','yyyy--mm-dd'));
    insert into tempTable(qty,fdate) values (7,to_date('2009-02-04','yyyy--mm-dd'));
    insert into tempTable(qty,fdate) values (8,to_date('2009-02-05','yyyy--mm-dd'));
    insert into tempTable(qty,fdate) values (9,to_date('2009-03-06','yyyy--mm-dd'));
    insert into tempTable(qty,fdate) values (10,to_date('2009-03-07','yyyy--mm-dd'));
    insert into tempTable(qty,fdate) values (11,to_date('2009-04-02','yyyy--mm-dd'));
    insert into tempTable(qty,fdate) values (12,to_date('2009-04-05','yyyy--mm-dd'));
    insert into tempTable(qty,fdate) values (12,to_date('2009-04-06','yyyy--mm-dd'));

    select aa.aqty,to_char(max(b.fdate),'yyyymmdd') from

    ( select max(qty) aqty ,to_char(fdate,'yyyymm') adate from tempTable a group by to_char(fdate,'yyyymm') ) aa

    left join tempTable b on aa.aqty = b.qty and aa.adate = to_char(b.fdate,'yyyymm') group by aa.aqty

    结果:

    6 20090103
    8 20090205
    10 20090307
    12 20090406

    打赏 评论

相关推荐 更多相似问题