У меня есть запрос, который пытается составить отчет о расходах и кредитах, сгруппированный по кодам товара и расчетному периоду. Таблица начислений, из которой она извлекает, имеет следующий формат:
BillingPeriod|ItemCode|ItemName|Charge|IsAdjustment|AdjustmentDate|ReportTimestamp
Я столкнулся с несколькими проблемами, которые мой текущий запрос обрабатывает довольно хорошо, я думаю. Поскольку в некоторых случаях код оплаты не встречается в таблице начислений, потому что мы не выставляли счета за него, но мне нужна единая таблица, отображающая каждый период расчета, поэтому я делаю фиктивную таблицу, заполненную периодами выставления счетов и нулями, и объедините его с результатами из таблицы «Сборы», например:
SELECT BillingPeriod, SumOfCharge AS Total FROM (
SELECT BillingPeriod, 0 AS SumOfCharge
FROM Charges
UNION
SELECT BillingPeriod, SUM(Charge) AS SumOfCharge
FROM Charges
WHERE (ItemCode Between 1900 and 1995)
GROUP BY BillingPeriod
);
Итак, в конечном итоге происходит следующее: скажем, у меня есть одно обвинение за январь и март 2011 года, но больше ничего. Таблица будет возвращать вывод как это:
BillingPeriod|Charge
1/1/2011 |100.00
1/1/2011 |0
2/1/2011 |0
3/1/2011 |0
3/1/2011 |-23.00
4/1/2011 |0
5/1/2011 |0
6/1/2011 |0
7/1/2011 |0
Я пытаюсь избавиться от этих 0-значных строк и выбрать правильную для отображения в отчете. Единственная сложность в том, что значения могут быть положительными, отрицательными или нулевыми, поэтому простое выполнение MAX не сработает. Я также пытался FIRST () или LAST (), (COALESCE ()) не работает, у меня есть доступ). Любая помощь будет оценена.