I have such a request with total amounts (this is a simplified example)
INSERT INTO DEMO (a,b,c,d,e)
SELECT
DATA.a,
NVL((SELECT SUM r2.x FROM EXAMPLE r2 WHERE r2.a = r1.a AND r2.i <= r1.i),0),
DATA.c,
NVL((SELECT SUM r2.y FROM EXAMPLE r2 WHERE r2.a = r1.a AND r2.i <= r1.i),0),
DATA.e
FROM
DATA
LEFT OUTER JOIN EXAMPLE r1 ON DATA.a = r1.a
This request works, but incredibly slow. Since both nested selections look the same, I wanted to regroup them. Sort of
SELECT SUM r2.x, SUM r2.y FROM EXAMPLE r2 WHERE r2.a = r1.a AND r2.i <= r1.i
but I can’t achieve this. How can I do it?
I tried both
INSERT INTO DEMO (a,c,e,b,d)
SELECT
DATA.a,
DATA.c,
DATA.e
(SELECT SUM r2.x, SUM r2.y FROM EXAMPLE r2 WHERE r2.a = r1.a AND r2.i <= r1.i)
FROM DATA
LEFT OUTER JOIN EXAMPLE r1
ON DATA.a = r1.a
and
INSERT INTO DEMO (a,c,e,b,d)
SELECT
DATA.a,
DATA.c,
DATA.e
FROM DATA
LEFT OUTER JOIN EXAMPLE r1
ON DATA.a = r1.a
UNION
SELECT
(SELECT SUM r2.x, SUM r2.y FROM EXAMPLE r2 WHERE r2.a = r1.a AND r2.i <= r1.i)
FROM DATA
LEFT OUTER JOIN EXAMPLE r1
ON DATA.a = r1.a