select id, JHBH, jhmc, sbdw, sbr, sbsj, state
  from (select z.id, JHBH, jhmc, sbdw, sbr, sbsj, state,llrq
          from mis_wz_ckd_pb z, mis_wz_ckd_xb c
         where z.id = c.pbid
           and c.llrq > to_date('2012-11-4', 'yyyy-mm-dd')
           and c.llrq < to_date('2012-12-6', 'yyyy-mm-dd')
           and c.stostore like '%'
           and z.sbr like '%%'
           and replace(jhbh, '-', '') like '%%'
           and z.state = '2'
           order by llrq)    
 group by id, JHBH, jhmc, sbdw, sbr, sbsj, state
括号里已经按照llrq排序了,为什么group by之后顺序又乱了呢?该如何书写?
没加GROUP BY:
加了GROUP BY:

解决方案 »

  1.   

    你那是group by 之前的排序,group by后的数据都不一样,不会根据group by 之前的排序的,你可以在group by 之后再做个排序不就解决问题了
      

  2.   

    为什么group by之后顺序又乱了呢?
    Oracle用hash group代替了sort group,边读边扫,没有顺序
      

  3.   

    llrq已经不在group by里了,如何按它查询?group by的目的就是把llrq以外重复的聚合
      

  4.   

    你们还是看明白需求内容再回答吧,order by 的字段已经被group by掉了
      

  5.   

    高手们 加个qq可以不 我存储过程 和 视图都不太好 大家帮个忙咯我qq980827202
      

  6.   

    为什么要用到group by ?仅仅用order by 就行了
      

  7.   

    在语句的最后 再加上 order by llrq即可
    里面的order by llrq就多余可以去掉
      

  8.   

    select id, JHBH, jhmc, sbdw, sbr, sbsj, state,llrq
      from (select z.id, JHBH, jhmc, sbdw, sbr, sbsj, state,llrq
              from mis_wz_ckd_pb z, mis_wz_ckd_xb c
             where z.id = c.pbid
               and c.llrq > to_date('2012-11-4', 'yyyy-mm-dd')
               and c.llrq < to_date('2012-12-6', 'yyyy-mm-dd')
               and c.stostore like '%'
               and z.sbr like '%%'
               and replace(jhbh, '-', '') like '%%'
               and z.state = '2'
               order by llrq)    
     group by llrq,id, JHBH, jhmc, sbdw, sbr, sbsj, state
    这回试一下