1

简化表结构(此时不能合并表):

表A:

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 回答