Would it be possible to move the condition to the WHERE statement? For example:
(SELECT ABS(ROUND((SUM(PRIMARY_QUANTITY)/30),2)) AS BURN_RATE, TXN.ORGANIZATION_ID, TXN.INVENTORY_ITEM_ID,
TXN.SUBINVENTORY_CODE , TXN.DISTRIBUTION_ACCOUNT_ID, GL.SEGMENT3
FROM INV_MATERIAL_TXNS TXN
LEFT OUTER JOIN INV_TRANSACTION_TYPES_TL TYPE ON TYPE.TRANSACTION_TYPE_ID = TXN.TRANSACTION_TYPE_ID
LEFT OUTER JOIN GL_CODE_COMBINATIONS GL ON GL.CODE_COMBINATION_ID = TXN.DISTRIBUTION_ACCOUNT_ID
WHERE TRANSACTION_DATE >= TRUNC(SYSDATE-30)
AND TRANSACTION_DATE < TRUNC(SYSDATE)
AND TXN.INVENTORY_ITEM_ID = 100002040645155
AND GL.SEGMENT3 <> 945
GROUP BY TXN.ORGANIZATION_ID, TXN.INVENTORY_ITEM_ID, TXN.SUBINVENTORY_CODE , TXN.DISTRIBUTION_ACCOUNT_ID
, GL.SEGMENT3 )