Поскольку ваши нежелательные результаты, дающие 648, 72 и 576, кратны 72, вы, вероятно, столкнулись с дублирующимися суммами из нескольких объединений. Следовательно, при агрегировании он суммирует все эти повторяющиеся значения.
Рассматривая свой дизайн запросов, рассмотрите возможность объединения двух отдельных агрегированных запросов для окончательного выражения BalancedOwed . Ниже мое предположение о ваших скорректированных SQL. Исправьте имена столбцов и таблиц по мере необходимости. Все остальные ненужные таблицы были удалены:
SELECT d_agg.CustomerProgram, d_agg.PartName, d_agg.IndiaUID, d_agg_agg.MSN,
d_agg.Total_RcvdQTY, p_agg.Total_PayAmountParts,
(d_agg.Total_RcvdQTY - p_agg.Total_PayAmountParts) AS BalanceOwed
FROM
(SELECT c.CustomerProgram, prt.PartName, prt.IndiaUID, prt.MSN,
SUM(d.RcvdQTY) AS Total_RcvdQTY
FROM (CustomersT c
INNER JOIN DiversionT d
ON c.CustomerID = d.CustomerID)
INNER JOIN PartsT prt
ON prt.PartID = d.PartID
GROUP BY c.CustomerProgram, prt.PartName, prt.IndiaUID, prt.MSN
) d_agg
INNER JOIN
(SELECT c.CustomerProgram, prt.PartName, prt.IndiaUID, prt.MSN,
SUM(pyb.PayAmountParts) AS Total_PayAmountParts
FROM (CustomersT c
INNER JOIN PaybackT pyb
ON c.CustomerID = pyb.CustomerID)
INNER JOIN PartsT prt
ON prt.PartID = pyb.PartID
GROUP BY c.CustomerProgram, prt.PartName, prt.IndiaUID, prt.MSN
) p_agg
ON d_agg.CustomerProgram = p_agg.CustomerProgram
AND d_agg.PartName = p_agg.PartName
AND d_agg.IndiaUID = p_agg.IndiaUID
AND d_agg_agg.MSN = p_agg.MSN
WHERE d_agg.CustomerProgram = 'M777 Australia'
AND d_agg.PartName = 'CSD-R'