Полагаю, TotalPrincipalPayments
и TotalInterestPayments
являются числовыми типами, поэтому рассматриваемые «пробелы» - это значение NULL
.
В SQL функция set SUM
будет игнорировать значения NULL, если только все значения не преобразуются в NULL
, и в этом случае возвращается NULL
(ошибочно, и ошибка в том, что SQL не Access для изменения :)
Чтобы использовать простой пример, SELECT SUM(a) FROM T;
вернет NULL
, только если a IS NULL
ИСТИНА для всех строк T
или когда T
пусто. Следовательно, вы можете переместить логику «заменить NULL
на ноль» за пределы функции SUM()
. Отметив, что «NULL
s распространяется» в вычислениях, вам нужно будет обрабатывать NULL
для каждого SUM()
.
Вы не опубликовали весь свой запрос, например, источник корреляционного имени («псевдоним таблицы») ReviewMain
не показывается. Но кажется очевидным, что вы создаете производную таблицу с именем "Cash Collected During the Period"
, и в этом случае вашему вычисляемому столбцу требуется предложение AS
('псевдоним столбца'), например TotalPayments
, например.
...
(
SELECT IIF(SUM(Review.TotalPrincipalPayments) IS NULL, 0, SUM(Review.TotalPrincipalPayments))
+ IIF(SUM(Review.TotalInterestPayments) IS NULL, 0, SUM(Review.TotalInterestPayments))
AS TotalPayments
FROM tblReviewScalars as Review
INNER JOIN tblReportVectors AS Report
ON Review.LoanID = Report.LoanID
WHERE Report.AP_Indicator = 'A'
AND Report.CashFlowDate = #2011-05-06#
AND Review.AsofDate = #2011-05-06#
AND Review.CreditRating = ReviewMain.CreditRating
) AS [Cash Collected During the Period], ...