日付フィールドと時刻フィールドの 2 つのフィールドがあり、どちらも文字列である、少し乱雑なテーブルを手に入れました。私がする必要があるのは、これらのフィールドから最小の日付を取得するか、日付/時刻が添付されていない場合はレコード自体を取得することです。サンプルデータは次のとおりです。
ID First Last Date Time
1 Joe Smith 2013-09-06 04:00
1 Joe Smith 2013-09-06 02:00
2 Jack Jones
3 John Jack 2013-09-05 06:00
3 John Jack 2013-09-15 15:00
クエリから欲しいのは、次のものを取得することです。
ID First Last Date Time
1 Joe Smith 2013-09-06 02:00
2 Jack Jones
3 John Jack 2013-09-05 06:00
ID 1 と 3 の最小の日付/時刻と、日付/時刻がないため、ID 2 だけが返されます。ID の 1 と 3 を希望どおりに正確に取得する次のクエリを思いつきました。
SELECT *
FROM test as t
where
cast(t.date + ' ' + t.time as Datetime ) = (select top 1 cast(p.date + ' ' + p.time as Datetime ) as dtime from test as p where t.ID = p.ID order by dtime)
しかし、行番号 2 はまったく返されません。これを行うためのより良い方法があると思います。何か案は?