CSVファイルから解析された料金とクレジットのテーブルに基づいて、料金とクレジットのレポートを作成しようとしています。このレポートのIグループに料金やクレジットを作成して、私が持っているアイテムコードに基づいて、それらを合計するにはヌル値をゼロで置き換え/空のテーブルにダミー値を入れてアクセスする
BillingPeriod | ItemCode | ItemName | Charge(Credit) | IsAdjustment | AdjustmentDate | ReportTimestamp
以下のように充電表とクレジットテーブルは、一方のフィールドのみが異なるもので、基本的には同じに見えます。例えば、私はそれがすべての課金ヶ月間の補助的な費用を合計作業している1つのクエリは、すべての罰金とダンディですが、商品コードが見つからない場合、問題が発生
SELECT Charges.BillingPeriod, Sum(Charges.Charge) as SumOfCharge
FROM Charges
WHERE (Charges.ItemCode Between 1301 and 1380)
GROUP BY Charges.BillingPeriod;
だろう。これらのクエリは、1ヶ月間請求されない可能性があり、別の月に請求される可能性があるため、特定の請求またはクレジットの有無にかかわらず要約を表示できるように、これらのクエリの柔軟性が必要です。我々は、彼らが合算することはできません、それらの特定のアイテムコードのために入金されていない、結果セットが空のテーブルですので
SELECT Credits.BillingPeriod, Sum(Credits.Credit) AS SumOfCredit
FROM Credits
WHERE (((Credits.ItemCode)=2217 Or (Credits.ItemCode)=2218 Or (Credits.ItemCode)=2241 Or (Credits.ItemCode)=2245 Or (Credits.ItemCode)=2260))
GROUP BY Credits.BillingPeriod;
:
動作しない問題のクエリは、この一つです。そのような状況が発生した場合、SumOfCreditの請求期間と返品期間を返す方法はありますか?私はNz()関数とIIf(IsNull())を試しましたが、それは私を助けませんでした。
ご協力いただければ幸いです。
EDIT:それはこのようになりますように、私は、クエリを変更:
SELECT Charges.BillingPeriod, SUM(Charges.Charge) AS SumOfCharge
FROM Charges
WHERE (((Charges.ItemCode) Between 1900 And 1995))
GROUP BY Charges.BillingPeriod
UNION
SELECT BillingPeriod, 0
FROM Charges
WHERE NOT EXISTS (SELECT * FROM Charges WHERE (Charges.ItemCode Between 1900 And 1995));
これは動作しますが、それはすべての請求期間は表示されません。たとえば、1つの特定の商品コードに2011年1月1日と2011年2月1日の請求があった場合、その2つのレコードのみが表示されます。私はそれがテーブルのすべての適用可能な請求期間を示すことを望みます。その月の料金が課金されているところでは料金がありません。私はクエリの最後に3番目のUNIONを追加しようとしましたが、もう一度BillingPeriodを選択しましたが、1ヶ月間重複したレコードが追加されてしまいました。再び、どんな助けも素晴らしいだろう。
'BillingPeriod' 、 お願いします。この列のデータ例も良いでしょう。 –