0

如何将以下查询重写为联接?我认为将其重写为连接会表现更好(我在理论上),但我很难让连接正确。任何帮助深表感谢。

SELECT O.JOBNUM, O.JOBNAME, O.STARTTS, 
(SELECT 
    MIN(I.STARTTS)
 FROM TABLE1 AS I
 WHERE 
    I.STARTTS > O.STARTTS AND 
    I.JOBNAME = O.JOBNAME) 
 AS ENDTS
 FROM TABLE1 AS O;

基本上,上述查询用于检索任何给定任务实例的 ENDTS。ENDTS 不会保存,并且会在相同任务循环运行时自动计算,因此任何给定任务的 ENDTS 都是相同任务(由名称标识)再次运行时的 STARTTS。如果任务尚未完成运行,则 NULL 可以用于 ENDTS。

提前感谢您的帮助。

4

1 回答 1

0

如果要将其重写为JOIN,则可以使用:

SELECT o.JOBNUM, 
    o.JOBNAME, 
    o.STARTTS, 
    MIN(i.STARTTS) ENDTS
FROM TABLE1 AS o
LEFT JOIN TABLE1 AS i
    ON i.STARTTS > o.STARTTS 
    AND i.JOBNAME = o.JOBNAME
 GROUP BY o.JOBNUM, o.JOBNAME, o.STARTTS;
于 2013-02-27T17:44:16.863 回答