顧客レベルのクレジット残高のエージングレポートを作成する必要があります。
ノート:
経年劣化は、お客様の最終支払い日に基づいています。
顧客は複数のアカウントを持つことができ、間違ったアカウントに支払いが適用されるというエラーが発生することがあります。たとえば、アカウントに15ドルの残高がある顧客は、15ドルの支払いを行います。その15ドルの支払いが間違ったアカウントに適用され、顧客の1つのアカウントに15ドルの残高が残り、別のアカウントに15ドルの残高が残る可能性があります。この顧客はレポートから除外する必要があります。
クレジット残高を顧客に提供するためのSQL:
SELECT
ACCOUNT.CUST_ID
, sum(ACCOUNT.BALANCE)
FROM ACCOUNT
GROUP BY ACCOUNT.CUST_ID
HAVING sum(ACCOUNT.BALANCE) < 0
最新の支払い日を取得するSQL:
SELECT
TRANSACTIONS.CUST_ID
, MAX(TRANSACTIONS.POST_DATE)
FROM TRANSACTIONS
WHERE TRANSACTIONS.TX_TYPE = 'PAYMENT'
GROUP BY TRANSACTIONS.CUST_ID
次のようなエージングバケット用の列を作成する必要があります。
'0-30'クレジットバランス合計
'0-30'クレジットバランス顧客数
'31-60'..。
max(TRANSACTIONS.POST_DATE)と "yesterday"-DATEADD(dd、-1、getdate())の間でDATEDIFF関数を使用してCASEステートメントを使用してバケットを作成しました。
ただし、バケットの合計とカウントの計算を実行する前に、変数またはストアドプロシージャを使用してこれを実行し、最後の支払い日に基づいて顧客を分離する方がはるかに効率的ではないでしょうか。
これを正確かつ効率的に行う方法に関するアイデアはありますか?これまで、簡単なクエリでクレジット残高と最終支払い日を持つ顧客をピックアップし、Excelを使用して自分でエージングバケットを作成してきました。