मुझे लगता है कि आप इसे आवश्यकता से थोड़ा अधिक जटिल बना रहे हैं।
SELECT
ProductID,
SUM(IF(PaymentMethod = 'Cash', Amount, 0)) AS 'Cash',
-- snip
SUM(Amount) AS Total
FROM
Payments
WHERE
SaleDate = '2012-02-10'
GROUP BY
ProductID