如何将以下查询重写为连接?我认为重写它作为一个连接会表现得更好(我理论化)但我很难获得正确的连接。任何帮助深表感谢。
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。如果任务尚未完成运行,则ENDTS可以使用NULL。
提前感谢您的帮助。
答案 0 :(得分: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;