使用SQL Server 2000
表1
id date time
001 01/02/2012 02:00
001 02/02/2012 01:00
001 07/02/2012 08:00
002 04/02/2012 01:00
002 15/02/2012 06:00
...
从table1我希望按日期列
获取每个id订单的第二条记录预期产出
id date time
001 02/02/2012 01:00
001 07/02/2012 08:00
002 15/02/2012 06:00
...
如何查询以获取第二条记录。
需要sql查询帮助
答案 0 :(得分:3)
像
这样的东西SELECT yt.*
FROM your_table yt INNER JOIN
(
SELECT [id],
MIN([datetime]) first_datetime
FROM your_table
GROUP BY [id]
) f ON yt.id = f.id
AND yt. [datetime] > f.first_datetime
假设第一条记录是每个ID的最小日期。
答案 1 :(得分:0)
看看这些数据看起来并不是时间,所以它会让事情变得复杂一些。 我没有SQL Server 2000试试这个,所以我会尝试评论每一行,以便你明白并纠正任何错误:
使用标识列
创建新的临时表create #tmp (MYNEWID int identity, id int, dt datetime)
从表中插入记录
insert into #tmp select id, dt from table1
获取除第一个id之外的所有记录:
select id, dt
from #tmp T
where cast(T.id as varchar)+cast(T.dt as varchar) not in
(select top 1 cast(X.id as varchar)+cast(X.dt as varchar)
from #tmp X
where T.id=X.id
order by MYNEWID asc)
如果存在重复的dt
,以下代码将无法按预期工作答案 2 :(得分:0)
select t1.* from table1 t1 left join
(select top 1 * from table1) t2
on t1.id=t2.id and t1.date=t2.date and t1.time=t2.time
where t2.id is null and t2.date is null and t2.time is null