0

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 順で 2 番目以降のレコードを取得したい

期待される出力

id date time

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

2 番目以降のレコードを取得するためのクエリの作成方法。

SQL クエリのヘルプが必要

4

3 に答える 3

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 ごとの最小日付であると仮定します。

于 2012-08-27T04:58:07.207 に答える
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
于 2012-08-27T06:51:02.293 に答える
0

データを見ると時間順ではないので少しややこしくなります。これを試すための SQL Server 2000 を持っていないので、各行にコメントを付けて、アイデアを得てエラーを修正します。

ID 列を含む新しい一時テーブルを作成する

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 がある場合、次のコードは期待どおりに機能しません。

于 2012-08-27T05:11:26.827 に答える