一个表有如下记录:  No   MyName  MyTime 
-----------------------------
  1    李四  2011-06-23
  2    李四  2011-06-24
  3    王五  2011-06-24
  4    张三  2011-06-23            
  5    张三  2011-06-24 标准排序方式为: ORDER BY MyName, MyTime, 因为李(L), 王(W), 张(Z), 所以排序是李、王、张
但是公司要求排序在此基础上还得检查相同名称的取最小时间再排序, 也就是说希望得到的结果如下:  No   MyName  MyTime 
-----------------------------
  1    李四  2011-06-23
  2    李四  2011-06-24
  3    张三  2011-06-23       <--- 因为张三的最小时间比王五的最小时间小, 所以得排王五前边             
  4    张三  2011-06-24 
  5    王五  2011-06-24我原先的语句是: SELECT * FROM MyTable ORDER BY MyName, MyTime,不符合要求这个排序语句我该怎么写?

解决方案 »

  1.   

    SQL SERVER 2000 还是SQL SERVER 2005+?
      

  2.   

    楼上能解决部分问题, 但是有部分情况不能解决经理希望结果是这样:
      1 张三 2011-06-22 <--- 因为张三的最小时间比李四的最小时间小, 所以得排李四前边  
      2 张三 2011-06-24 
      3 李四 2011-06-23
      4 李四 2011-06-24
      5 王五 2011-06-24如果按楼上的 order by myname,min(mytime), 得到的结果是:  1 李四 2011-06-23
      2 李四 2011-06-24
      3 王五 2011-06-24
      4 张三 2011-06-22  <--- 这个最小时间没排在最前边, 因为第一排序MyName限制了它  
      5 张三 2011-06-24 而如果按 order by min(mytime), myname, 得到的结果又是:
      1 张三 2011-06-22  <--- 虽最小时间排在最前边, 但也不符合经理要求的同名人按最小时间排最前的要求
      2 李四 2011-06-23        |
      3 李四 2011-06-24        |
      4 王五 2011-06-24        |
      5 张三 2011-06-24  <-----
     
      

  3.   

    create table tb(name varchar(4), rq datetime)
    go
    insert into tb select '张三' ,'2011-06-22' --- 因为张三的最小时间比李四的最小时间小, 所以得排李四前边   
    insert into tb select   '张三', '2011-06-24'  
    insert into tb select   '李四' ,'2011-06-23'
    insert into tb select  '李四' ,'2011-06-24'
    insert into tb select '王五', '2011-06-24'goselect a.name, a.rq from
    tb a, (select name, min(rq) as rq from tb group by name) b
    where a.name = b.name
    order by b.rq, a.name