表结构是这样TimeField,groupField
其中TimeField 是表示时间的字段,groupField表示分类的字段
我要查询出TimeField 中距离现在时间最近的记录(该时间是比sysdate大的时间),同时groupField不为'record1'的记录但是要把比TimeField 中比当前时间小的记录和groupField属于'record1'的记录都列在最后;比如
TimeField,groupField
8:30         record1
8:31         record2 
9:30         record1
9:31         record2 
假如当前查询时间是8:35
查询结果是
9:31         record2 
8:30         record1
8:31         record2 
9:30         record1请问有办法吗?

解决方案 »

  1.   

    //如果groupField只有'record1' ,'record2'2中的话,否则的要关联下 
    select min(TimeField),'record2' from 表 where TimeField>sysdate and groupField<>'record1'
    union all
    select * from 表 where TimeField <> (select min(TimeField) from 表 where TimeField>sysdate and groupField<>'record1')
      

  2.   

    实际上是取出了所有记录(至少楼主给出的例子就是这样的), 只是做一下排序
    SELECT timefield, groupfield FROM tabel1
    order by case when timefield>sysdate and groupfield<>'record1' then 0 else 1 end