1

簡略化されたテーブル構造(現時点ではテーブルをマージできません):

TableA:

dts_received (datetime)
dts_completed (datetime)
task_a (varchar)

表B:

dts_started (datetime)
task_b (varchar)

私がやりたいのは、タスクが完了するまでにかかった時間を決定することです。

結合パラメータは次のようになります

ON task_a = task_b AND dts_completed < dts_started

問題は、dts_completedの後に複数の日時が発生する可能性があることです。

tableA-datetimeの後に発生する最初のtableB-datetimeのみを返す結合を作成するにはどうすればよいですか?

4

2 に答える 2

3
select a.task_a as task, min(b.dts_started) as dts_started
from TableA a
inner join TableB b on a.task_a = b.task_b 
    and a.dts_completed < b.dts_started 
GROUP BY a.task_a
于 2010-06-10T18:12:07.327 に答える
2
SELECT task_a, dts_completed,
bb.started
FROM tableA
INNER JOIN 
(SELECT task_b, MIN(dts_started) as started
FROM tableB GROUP BY taks_b)bb
ON (bb.task_b = tableA.task_a AND bb.started > tableA.dts_completed)
于 2010-06-10T18:16:07.667 に答える