求一SQL语句,在线等……

jdhsd 2006-05-10 09:53:25
一SQL语句,
表table1,字段(姓名,时间),要实现的结果是,姓名一样的放在一起,但时间必须以姓名
对应的第一个时间排序显示(不同的姓名的时间以姓名对应的第一个时间先后顺序,
同一个姓名也按照时间先后显示)。请问怎么实现啊,谢谢
数据为
姓名 开始时间
张三 2006-05-01 20:08:06.000
张三 2006-05-02 20:08:06.000
李四 2006-05-03 20:08:06.000
张三 2006-05-04 20:08:06.000
李四 2006-05-05 20:08:06.000
李四 2006-05-06 20:08:06.000
王五 2006-05-07 20:08:06.000
李四 2006-05-08 20:08:06.000

要得到的结果是
姓名 开始时间
张三 2006-05-01 20:08:06.000
张三 2006-05-02 20:08:06.000
张三 2006-05-04 20:08:06.000
李四 2006-05-03 20:08:06.000
李四 2006-05-05 20:08:06.000
李四 2006-05-06 20:08:06.000
李四 2006-05-08 20:08:06.000
王五 2006-05-07 20:08:06.000

请高手指点下,谢谢


...全文
131 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
splory 2006-05-10
  • 打赏
  • 举报
回复
Select A.* from table1 A inner join (Select Min(开始时间) as 开始时间,姓名 from table1 group by 姓名) as B
on(A.姓名=B.姓名)
order by B.开始时间,a.开始时间


这个通俗易懂
paoluo 2006-05-10
  • 打赏
  • 举报
回复
看後面的回復。:)。

我和貓的方法應該都行。
jdhsd 2006-05-10
  • 打赏
  • 举报
回复
不好意思,这样不行的,
但时间必须以姓名对应的第一个时间排序显示
这样查询的结果有下面的情况
王五 2006-05-07 20:08:06.000
张三 2006-05-01 20:08:06.000
张三 2006-05-02 20:08:06.000
张三 2006-05-04 20:08:06.000
李四 2006-05-03 20:08:06.000
李四 2006-05-05 20:08:06.000
李四 2006-05-06 20:08:06.000
李四 2006-05-08 20:08:06.000
也就是第一行不是最小时间。
虽然在王五中2006-05-07 20:08:06.000时间排序中他是最小的
但是在整个时间中他却是最大的了
paoluo 2006-05-10
  • 打赏
  • 举报
回复
create table table1( 姓名 Nvarchar(20), 开始时间 datetime)
insert into table1 select
N'张三', '2006-05-01 20:08:06.000' union select
N'张三', '2006-05-02 20:08:06.000' union select
N'李四', '2006-05-03 20:08:06.000' union select
N'张三', '2006-05-04 20:08:06.000' union select
N'李四', '2006-05-05 20:08:06.000' union select
N'李四', '2006-05-06 20:08:06.000' union select
N'王五', '2006-05-07 20:08:06.000' union select
N'李四', '2006-05-08 20:08:06.000'

Select * from table1 A Order By (Select Min(开始时间) from table1 Where 姓名=A.姓名),开始时间

Drop Table table1
--結果
/*
姓名 开始时间
张三 2006-05-01 20:08:06.000
张三 2006-05-02 20:08:06.000
张三 2006-05-04 20:08:06.000
李四 2006-05-03 20:08:06.000
李四 2006-05-05 20:08:06.000
李四 2006-05-06 20:08:06.000
李四 2006-05-08 20:08:06.000
王五 2006-05-07 20:08:06.000
*/
huailairen 2006-05-10
  • 打赏
  • 举报
回复
create table table1( 姓名 varchar(20), 时间 datetime)
insert into table1 select
'张三', '2006-05-01 20:08:06.000' union select
'张三', '2006-05-02 20:08:06.000' union select
'李四', '2006-05-03 20:08:06.000' union select
'张三', '2006-05-04 20:08:06.000' union select
'李四', '2006-05-05 20:08:06.000' union select
'李四', '2006-05-06 20:08:06.000' union select
'王五', '2006-05-07 20:08:06.000' union select
'李四', '2006-05-08 20:08:06.000'

select b.姓名,a.时间
from table1 a,(select 姓名,min(时间) as 时间 from table1 group by 姓名) b
where a.姓名=b.姓名
order by b.时间,a.时间

姓名 时间
-------------------- ------------------------------------------------------
张三 2006-05-01 20:08:06.000
张三 2006-05-02 20:08:06.000
张三 2006-05-04 20:08:06.000
李四 2006-05-03 20:08:06.000
李四 2006-05-05 20:08:06.000
李四 2006-05-06 20:08:06.000
李四 2006-05-08 20:08:06.000
王五 2006-05-07 20:08:06.000

(所影响的行数为 8 行)
futulove 2006-05-10
  • 打赏
  • 举报
回复
呵呵,不就是一个order by吗
paoluo 2006-05-10
  • 打赏
  • 举报
回复
Select * from table1 Order By 姓名,开始时间

??
paoluo 2006-05-10
  • 打赏
  • 举报
回复
暈,沒話說。
  • 打赏
  • 举报
回复
order by
jdhsd 2006-05-10
  • 打赏
  • 举报
回复
恩,谢谢各位,我先试试,如果解决,回头给分

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧