मुझे समझ में नहीं आता कि TO_CHAR(SDATE, 'W')
का उपयोग करने का क्या मतलब है? ? डॉक्टर के अनुसार यह आपको महीने में सप्ताह का नंबर देने वाला है...
वैसे भी मैंने इस उम्मीद में क्वेरी को सरल बनाने की कोशिश की कि यह अभी भी आपकी आवश्यकताओं के अनुरूप है:
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;
पुनश्च:मुझे TO_DATE(TO_CHAR(a.SDATE, 'YYYY-MM-DD'), 'YYYY-MM-DD')
करने में कोई मतलब नहीं दिखता , यह a.SDATE
. के बराबर है ...