请高手帮我优化这条SQL语句
SELECT A.GJLDATE GJLDATE,
A.GJLGDID GJLGDID,
GBCNAME,
GBBARCODE,
GPHSJJ,
GPSJ,
SUM(DECODE(A.GJLTRAN,'1',A.GJLSL,'2',A.GJLSL,'3',A.GJLSL,'4',A.GJLSL,'5',A.GJLSL,'6',A.GJLSL,0)) JHSL,
-1*SUM(DECODE(A.GJLTRAN,'E',A.GJLSL,'F',A.GJLSL,'G',A.GJLSL,'H',A.GJLSL,0)) XSSL,
SUM(B.GJLQMSL) KCSL
FROM GOODSJXCLIST A,GOODSPRICE,GOODSBASE,
(SELECT GJLGDID,GJLDATE,GJLQMSL FROM GOODSJXCLIST WHERE GJLSEQ IN (SELECT MAX(GJLSEQ)FROM GOODSJXCLIST GROUP BY GJLDATE,GJLGDID) ) B
WHERE A.GJLGDID=GPGDID AND
A.GJLGDID=B.GJLGDID AND
A.GJLDATE=B.GJLDATE AND
A.GJLGDID=GBID AND
A.GJLMFID = '2020099' AND
'A.GJLGDID'='A.GJLGDID' AND
( A.GJLDATE >= TO_DATE('2002-10-01','YYYY-MM-DD') AND A.GJLDATE <= TO_DATE('2002-10-13','YYYY-MM-DD') ) AND
'GOODSBASE.GBBARCODE'='GOODSBASE.GBBARCODE'
GROUP BY A.GJLDATE,
A.GJLGDID,
GBCNAME,
GBBARCODE,
GPHSJJ,
GPSJ
ORDER BY GJLDATE
;
这是一条放在数据窗口中的语句,所以不能用临时表,由于涉及的三个表的数据都很大,执行这条语句要花一个多小时,请各位高手指点该怎么优化这条语句;