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になります。タスクの実行がまだ終了していない場合は、ENDTSに対してNULLで問題ありません。

よろしくお願いします。

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 に答える