2012-08-27 130 views
0

從表1使用SQL Server 2000如何獲得第二個記錄起

table1的

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 
... 

我想有效期限欄

期望輸出

起獲得第二個記錄每個ID訂單
id date time 

001 02/02/2012 01:00 
001 07/02/2012 08:00 
002 15/02/2012 06:00 
... 

如何進行查詢以獲取第二條記錄。

需要SQL查詢幫助

+0

@marc_s,我編輯我的問題,爲了有效期限欄 – JetJack

回答

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最小日期。

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的

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