CSV 파일에서 파싱 된 청구 및 크레딧 테이블을 기반으로 요금 및 크레딧 리포트를 만들려고합니다. 이 보고서 I 그룹에게 요금 및 크레딧을 작성하고 내가 가지고있는 아이템 코드에 기반을 요약하면Null 값을 0으로 바꾸기/더미 값을 빈 테이블에 넣기 Access
BillingPeriod | ItemCode | ItemName | Charge(Credit) | IsAdjustment | AdjustmentDate | ReportTimestamp
아래와 같이 충전 테이블 및 신용 표는 단지 하나의 필드가 다른 존재로, 기본적으로 동일한 보인다. 예를 들어, 나는 그 작업 한 하나 개의 쿼리는 모든 청구 개월 동안 보조 요금이 벌금과 멋쟁이 전부입니다
SELECT Charges.BillingPeriod, Sum(Charges.Charge) as SumOfCharge
FROM Charges
WHERE (Charges.ItemCode Between 1301 and 1380)
GROUP BY Charges.BillingPeriod;
될 것이라고 요약하지만, 상품 코드가 발견되지 않을 때 문제가 발생합니다. 이 쿼리는 한 달 동안 비용이 청구되지 않을 수도 있고 특정 달의 크레딧이 있거나없는 요약을 표시 할 정도로 충분히 유연 할 수 있습니다. 다른 달 동안 비용이 청구될 수 있습니다. 우리가 그 특정 항목 코드 적립되지 않은 때문에
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에 null 청구 기간과 0을 반환 할 수있는 방법이 있습니까? 나는 IIz (IsNull())뿐만 아니라 Nz() 함수를 시도했지만 그 점이 도움이되지 못했습니다.
도움을 주시면 감사하겠습니다.
편집 : 나는 그것은 다음과 같습니다 있도록 쿼리 변경 :
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));
이 작동을하지만, 모든 청구 기간을 표시하지 않습니다. 예를 들어, 2011 년 1 월 1 일과 2011 년 2 월 1 일에 특정 품목 코드에 요금이 부과되면 해당 두 레코드 만 표시됩니다. 테이블에 적용 가능한 모든 청구 기간을 표시하고 싶습니다. 그 달에 요금이 부과되는 곳과없는 곳에서 요금이 부과됩니다. 세 번째 UNION 쿼리 끝에 추가 시도했다 BillingPeriod, 0 다시 선택하지만 한 달 동안 중복 레코드를 추가합니다. 나는 원하지 않습니다. 다시 한 번 도움이 될 것입니다.
'BillingPeriod' 제발. 이 열에 대한 예제 데이터도 유용 할 것입니다. –