A stored procedure was running slowly so I took the code, removed the
subselect and included a join, then took the max and included as part
of a correlated subquery.
The result is below, however, this is no improvement over the original.
An advice would be greatly appreciated.
SELECT FSALT.FUNDING_LINE_TYPE_ID,
A.PAYMENT_PERIOD_ID,
A.CASH AS CASH,
A.VOLUME AS VOLUME
FROM ACTUALS A
INNER JOIN (SELECT MAX(COLLECTION_PAYMENT_PERIOD_*ID) AS CPP FROM
ACTUALS ACT WHERE COLLECTION_PAYMENT_PERIOD_ID<=*456) AS O ON O.CPP =
A.COLLECTION_PAYMENT_PERIOD_ID
INNER JOIN FS_ACTUAL_LINE_TYPES FSALT ON FSALT.FS_ACTUAL_LINE_TYPE_ID =
A.FS_ACTUAL_LINE_TYPE_ID
INNER JOIN PAYMENT_PERIODS PP ON PP.PAYMENT_PERIOD_ID =
A.PAYMENT_PERIOD_ID
WHERE
A.ORG_ID=24771
AND A.LSC_ORG_ID=5816
AND PP.FUNDING_STREAM_ID=5
AND PP.FUNDING_PERIOD_ID=6
GROUP BY
FSALT.FUNDING_LINE_TYPE_ID,
A.PAYMENT_PERIOD_ID,
A.CASH,
A.VOLUME