Ik begrijp niet wat het nut is van het gebruik van TO_CHAR(SDATE, 'W')
? Volgens het document zou dit je het weeknummer in de maand moeten geven...
Hoe dan ook, ik heb geprobeerd de zoekopdracht te vereenvoudigen, in de hoop dat deze nog steeds aan uw behoeften voldoet:
SELECT x.*, ABS (LTMA-STMA) DIFFERENCE
FROM
(
SELECT SDATE, PAYLOAD,
AVG(PAYLOAD) OVER (ORDER BY SDATE rows BETWEEN 14 PRECEDING AND CURRENT ROW) STMA,
AVG(PAYLOAD) OVER (ORDER BY SDATE rows BETWEEN 90 PRECEDING AND CURRENT ROW) LTMA
FROM
(
SELECT a.SDATE, SUM(a.PAYLOAD) PAYLOAD
FROM TABLE_PAYLOAD a
WHERE a.SDATE > sysdate - 3 * 365
GROUP BY a.SDATE
)
) x
ORDER BY SDATE;
PS:ik zie het nut er ook niet van in om TO_DATE(TO_CHAR(a.SDATE, 'YYYY-MM-DD'), 'YYYY-MM-DD')
te doen , dit komt overeen met a.SDATE
...