我需要在客戶級別創建貸方餘額的老化報告。SQL:根據財務報告的上一個付款日期創建老化桶
注:
老化根據客戶的最後付款日期。
客戶可以擁有多個帳戶,並且有時會向錯誤帳戶應用付款時發生錯誤。例如,一個帳戶餘額爲15美元的客戶可以支付15美元的費用。 15美元的付款可能適用於錯誤的賬戶,客戶的賬戶餘額爲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' 信貸餘額客戶COUNT
'31 - 60' ......
我會用最大的DATEDIFF函數(TRANSACTIONS.POST_DATE)和 「昨天」 使用CASE語句 - DATEADD(dd,-1,getdate())創建桶。
但是,在執行存儲桶總計和計數計算之前,使用變量或存儲過程根據最後一次付款日期分隔客戶會不會更有效率?
關於如何準確有效地做到這一點的任何想法?到目前爲止,我一直在用簡單的查詢獲取貸方餘額和最後付款日期的客戶,然後使用Excel自己創建老化存儲桶。
謝謝,先生。這很好。 – 2012-07-12 14:40:43
@戈登我發佈這個問題http://stackoverflow.com/questions/11592880/sql-aging-report這是類似於這個答案,但我的問題是,我想這樣做,但只有一個表。希望您能夠幫助我。謝謝 – VAAA 2012-07-21 14:23:49