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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题