日期:2014-05-17  浏览次数:20682 次

这个SQL该如何写,关于分组和时间查询的问题
表结构是这样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

请问有办法吗?

------解决方案--------------------
//如果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 ')
------解决方案--------------------
实际上是取出了所有记录(至少楼主给出的例子就是这样的), 只是做一下排序
SELECT timefield, groupfield FROM tabel1
order by case when timefield> sysdate and groupfield <> 'record1 ' then 0 else 1 end